{"version":3,"sources":["../node_modules/reactstrap/node_modules/prop-types/index.js","../node_modules/react/index.js","../node_modules/classnames/index.js","../../src/devtoolsExtension.ts","../../src/isPlainObject.ts","../../src/createAction.ts","../../src/utils.ts","../../src/getDefaultMiddleware.ts","../../src/configureStore.ts","../../src/mapBuilders.ts","../../src/createSlice.ts","../../src/createReducer.ts","../../src/nanoid.ts","../../src/createAsyncThunk.ts","../../src/listenerMiddleware/index.ts","../../src/listenerMiddleware/task.ts","../../src/autoBatchEnhancer.ts","../../src/index.ts","../node_modules/react/jsx-runtime.js","../../../lib/util/index.js","../../../lib/util/constants.js","../../src/utils/errors.ts","../../src/utils/common.ts","../../src/utils/plugins.ts","../../src/core/scope.ts","../../src/core/finalize.ts","../../src/core/proxy.ts","../../src/core/immerClass.ts","../../src/core/current.ts","../../src/plugins/es5.ts","../../src/immer.ts","../../src/utils/env.ts","../node_modules/react-dom/index.js","../node_modules/events/events.js","../../../../lib/webrtc/util/index.js","../node_modules/clsx/dist/clsx.m.js","../../src/utils/propValidator.ts","../../src/utils/constant.ts","../../src/utils/cssTransition.tsx","../../src/utils/collapseToast.ts","../../src/core/eventManager.ts","../../src/hooks/useToastContainer.ts","../../src/hooks/useToast.ts","../../src/components/CloseButton.tsx","../../src/components/ProgressBar.tsx","../../src/components/Icons.tsx","../../src/components/Toast.tsx","../../src/components/Transitions.tsx","../../src/components/ToastContainer.tsx","../../src/core/toast.tsx","../node_modules/axios/lib/utils.js","../node_modules/axios/index.js","../../../lib/util/log.js","../node_modules/redux/es/redux.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/lodash/_root.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../lib/util/twilio-video-errors.js","../node_modules/lodash/isArray.js","../node_modules/property-expr/index.js","../../../lib/webrtc/index.js","../../../lib/util/browserdetection.js","../../../lib/util/timeout.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/has.js","../../../../../lib/media/track/es5/index.js","../../lib/statemachine.js","../../../../lib/signaling/v2/mediasignaling.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/_baseGetTag.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../lib/webrtc/util/sdp.js","../../lib/eventemitter.js","../node_modules/lodash/toString.js","../../../src/Condition.ts","../../../src/utils.ts","../../../src/builder.ts","../../../src/parsers/defaultInstructionParsers.ts","../../../src/parsers/ObjectQueryParser.ts","../../../src/interpreter.ts","../../../src/index.ts","../../../src/instructions.ts","../../../src/MongoQueryParser.ts","../../../src/interpreters.ts","../../../src/defaults.ts","../../../src/factory.ts","../../../src/translator.ts","../../../src/Rule.ts","../../../src/structures/LinkedItem.ts","../../../src/RuleIndex.ts","../../../src/PureAbility.ts","../../../src/matchers/conditions.ts","../../../src/matchers/field.ts","../../../src/Ability.ts","../../../src/AbilityBuilder.ts","../../../src/ForbiddenError.ts","../node_modules/lodash/_Symbol.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/cancel/Cancel.js","../../../lib/webaudio/audiocontext.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_toKey.js","../node_modules/reselect/es/defaultMemoize.js","../node_modules/reselect/es/index.js","../node_modules/lodash/mapValues.js","../../lib/index.ts","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/react-popper/lib/esm/Reference.js","../../src/utils.js","../../src/Container.js","../../src/Row.js","../../src/Col.js","../../src/Navbar.js","../../src/NavbarBrand.js","../../src/NavbarText.js","../../src/NavbarToggler.js","../../src/Nav.js","../../src/NavItem.js","../../src/NavLink.js","../../src/Breadcrumb.js","../../src/BreadcrumbItem.js","../../src/Button.js","../../src/ButtonToggle.js","../../src/DropdownContext.js","../../src/Dropdown.js","../../src/ButtonDropdown.js","../../src/ButtonGroup.js","../../src/ButtonToolbar.js","../../src/DropdownItem.js","../../src/DropdownMenu.js","../../src/DropdownToggle.js","../../src/Fade.js","../../src/AccordionContext.js","../../src/Accordion.js","../../src/UncontrolledAccordion.js","../../src/AccordionHeader.js","../../src/AccordionItem.js","../../src/Collapse.js","../../src/AccordionBody.js","../../src/Badge.js","../../src/Card.js","../../src/CardGroup.js","../../src/CardDeck.js","../../src/CardColumns.js","../../src/CardBody.js","../../src/CardLink.js","../../src/CardFooter.js","../../src/CardHeader.js","../../src/CardImg.js","../../src/CardImgOverlay.js","../../src/CarouselItem.js","../../src/CarouselContext.js","../../src/Carousel.js","../../src/CarouselControl.js","../../src/CarouselIndicators.js","../../src/CarouselCaption.js","../../src/UncontrolledCarousel.js","../../src/CardSubtitle.js","../../src/CardText.js","../../src/CardTitle.js","../../src/PopperContent.js","../../src/PopperTargetHelper.js","../../src/TooltipPopoverWrapper.js","../../src/Popover.js","../../src/UncontrolledPopover.js","../../src/PopoverHeader.js","../../src/PopoverBody.js","../../src/Progress.js","../../src/Portal.js","../../src/Modal.js","../../src/ModalHeader.js","../../src/ModalBody.js","../../src/ModalFooter.js","../../src/Tooltip.js","../../src/Table.js","../../src/ListGroup.js","../../src/Form.js","../../src/FormFeedback.js","../../src/FormGroup.js","../../src/FormText.js","../../src/Input.js","../../src/InputGroup.js","../../src/InputGroupText.js","../../src/Label.js","../../src/Media.js","../../src/Offcanvas.js","../../src/OffcanvasBody.js","../../src/OffcanvasHeader.js","../../src/Pagination.js","../../src/PaginationItem.js","../../src/PaginationLink.js","../../src/TabContext.js","../../src/TabContent.js","../../src/TabPane.js","../../src/Alert.js","../../src/Toast.js","../../src/ToastBody.js","../../src/ToastHeader.js","../../src/ListGroupItem.js","../../src/ListGroupItemHeading.js","../../src/ListGroupItemText.js","../../src/List.js","../../src/ListInlineItem.js","../../src/UncontrolledAlert.js","../../src/UncontrolledButtonDropdown.js","../../src/UncontrolledCollapse.js","../../src/UncontrolledDropdown.js","../../src/UncontrolledTooltip.js","../../src/Spinner.js","../../src/Placeholder.js","../../src/PlaceholderButton.js","../../src/polyfill.js","../node_modules/object-assign/index.js","../node_modules/webpack/buildin/global.js","../node_modules/process/browser.js","../node_modules/lodash/isObject.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/lodash/keys.js","../node_modules/lodash/isSymbol.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../lib/eventtarget.js","../../../lib/vendor/inherits.js","../../../../lib/media/track/index.js","../../../lib/util/documentvisibilitymonitor.js","../../../lib/util/cancelablepromise.js","../../../../lib/media/track/localtrackpublication.js","../../../../lib/media/track/remotetrackpublication.js","../../../../lib/util/sdp/index.js","../../../lib/signaling/participant.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/isLength.js","../node_modules/redux-thunk/es/index.js","../node_modules/lodash/snakeCase.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/nanoclone/src/index.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/yup/es/util/toArray.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/util/ReferenceSet.js","../node_modules/yup/es/schema.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.js","../node_modules/yup/es/string.js","../node_modules/yup/es/number.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/util/sortFields.js","../node_modules/yup/es/array.js","../node_modules/yup/es/setLocale.js","../node_modules/lodash/_baseIteratee.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/eq.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/lodash/_isIndex.js","../node_modules/webpack/buildin/module.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/_Stack.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../../../lib/vendor/loglevel.js","../../../lib/util/sid.js","../../../lib/util/twiliowarning.js","../../../lib/webrtc/mediastream.js","../../../../lib/webrtc/rtcsessiondescription/chrome.js","../../../../lib/webrtc/util/latch.js","../../../../lib/webrtc/rtcsessiondescription/firefox.js","../../../lib/util/detectsilentaudio.js","../../../lib/webaudio/detectsilence.js","../../../../lib/media/track/audiotrack.js","../../../../lib/media/track/mediatrack.js","../../../lib/util/localmediarestartdeferreds.js","../../../../lib/media/track/localmediatrack.js","../../../lib/util/detectsilentvideo.js","../../../lib/webaudio/workaround180748.js","../../../../lib/media/track/sender.js","../../../../lib/media/track/transceiver.js","../../lib/transceiver.js","../../lib/queueingeventemitter.js","../../../../lib/media/track/videotrack.js","../../../lib/data/transceiver.js","../../lib/twilioconnection.js","../node_modules/twilio-video/src/ws.js","../../../lib/util/movingaveragedelta.js","../../../lib/util/eventobserver.js","../../../../lib/util/insightspublisher/index.js","../../../lib/util/validate.js","../../../../lib/media/track/trackpublication.js","../../lib/participant.js","../../../../lib/media/track/remotemediatrack.js","../../../lib/stats/statsreport.js","../../../lib/stats/localtrackstats.js","../../../lib/stats/trackstats.js","../../../lib/stats/remotetrackstats.js","../../../lib/util/backoff.js","../../../lib/stats/receiverreport.js","../../../lib/stats/average.js","../../../lib/stats/senderorreceiverreport.js","../../../lib/stats/sum.js","../../../lib/stats/senderreport.js","../../../lib/stats/senderorreceiverreportfactory.js","../../../lib/signaling/recording.js","../../../lib/signaling/room.js","../../../lib/stats/networkqualitymediastats.js","../../../lib/stats/networkqualitysendorrecvstats.js","../../../lib/signaling/track.js","../../lib/createlocaltrack.js","../node_modules/warning/warning.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_hasUnicode.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/react-redux/node_modules/react-is/index.js","../../../src/Can.ts","../node_modules/react-fast-compare/index.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/mapKeys.js","../node_modules/toposort/index.js","../node_modules/@react-oauth/google/dist/index.esm.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_getTag.js","../node_modules/react-is/index.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/identity.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../lib/createlocaltracks.ts","../../../../lib/media/track/noisecancellationimpl.ts","../../lib/noisecancellationadapter.ts","../../../lib/util/dynamicimport.js","../../../lib/webrtc/getstats.js","../../../lib/webrtc/getusermedia.js","../../../lib/webrtc/mediastreamtrack.js","../../../lib/webrtc/rtcicecandidate.js","../../../../lib/webrtc/rtcpeerconnection/index.js","../../../../lib/webrtc/rtcpeerconnection/chrome.js","../../../lib/webrtc/rtcrtpsender.js","../../../../lib/webrtc/rtcpeerconnection/firefox.js","../../../../lib/webrtc/rtcpeerconnection/safari.js","../../../../lib/webrtc/rtcsessiondescription/index.js","../../../../../lib/media/track/es5/localaudiotrack.js","../../../../lib/media/track/localaudiotrack.js","../../../../../lib/media/track/es5/localvideotrack.js","../../../../lib/media/track/localvideotrack.js","../../../../lib/media/track/videoprocessoreventobserver.js","../../../../../lib/media/track/es5/localdatatrack.js","../../../../lib/media/track/localdatatrack.js","../../../lib/data/sender.js","../../../lib/preflight/preflighttest.ts","../../../lib/preflight/timer.ts","../../../lib/preflight/mos.ts","../../../lib/preflight/getCombinedConnectionStats.ts","../../../lib/preflight/getturncredentials.ts","../../../lib/util/networkmonitor.js","../../../lib/util/twilioerror.js","../../../lib/preflight/makestat.ts","../../../lib/preflight/syntheticaudio.ts","../../../lib/preflight/syntheticvideo.ts","../../lib/connect.js","../../lib/cancelableroompromise.js","../../lib/encodingparameters.js","../../lib/localparticipant.js","../../../../lib/media/track/localaudiotrackpublication.js","../../../../lib/media/track/localdatatrackpublication.js","../../../../lib/media/track/localvideotrackpublication.js","../../../../lib/media/track/remoteaudiotrack.js","../../../../lib/media/track/remoteaudiotrackpublication.js","../../../../lib/media/track/remotedatatrack.js","../../../../lib/media/track/remotedatatrackpublication.js","../../../../lib/media/track/remotevideotrack.js","../../../lib/util/nullobserver.js","../../../../lib/media/track/remotevideotrackpublication.js","../../../../lib/util/insightspublisher/null.js","../../lib/networkqualityconfiguration.js","../../lib/room.js","../../lib/remoteparticipant.js","../../../lib/stats/localaudiotrackstats.js","../../../lib/stats/localvideotrackstats.js","../../../lib/stats/remoteaudiotrackstats.js","../../../lib/stats/remotevideotrackstats.js","../../../../lib/signaling/v2/index.js","../../../../lib/signaling/v2/cancelableroomsignalingpromise.js","../../../../lib/signaling/v2/peerconnectionmanager.js","../../../../lib/signaling/v2/peerconnection.js","../../../../lib/util/sdp/simulcast.js","../../../../lib/signaling/v2/icebox.js","../../../lib/util/filter.js","../../../../lib/signaling/v2/iceconnectionmonitor.js","../../../lib/data/receiver.js","../../../lib/data/transport.js","../../../../lib/media/track/receiver.js","../../../../lib/util/sdp/trackmatcher.js","../../../../lib/util/sdp/issue8329.js","../../../../lib/signaling/v2/room.js","../../../../lib/signaling/v2/dominantspeakersignaling.js","../../../../lib/signaling/v2/networkqualitymonitor.js","../../../lib/stats/peerconnectionreportfactory.js","../../../lib/stats/icereportfactory.js","../../../lib/stats/icereport.js","../../../lib/stats/peerconnectionreport.js","../../../lib/stats/receiverreportfactory.js","../../../lib/stats/senderreportfactory.js","../../../../lib/signaling/v2/networkqualitysignaling.js","../../../lib/util/asyncvar.js","../../../../lib/signaling/v2/recording.js","../../../../lib/signaling/v2/remoteparticipant.js","../../../lib/signaling/remoteparticipant.js","../../../lib/stats/networkqualitystats.js","../../../lib/stats/networkqualityaudiostats.js","../../../lib/stats/networkqualitysendstats.js","../../../lib/stats/networkqualitybandwidthstats.js","../../../lib/stats/networkqualityfractionloststats.js","../../../lib/stats/networkqualitylatencystats.js","../../../lib/stats/networkqualityrecvstats.js","../../../lib/stats/networkqualityvideostats.js","../../../../lib/signaling/v2/remotetrackpublication.js","../../../lib/signaling/remotetrackpublication.js","../../../../lib/signaling/v2/trackprioritysignaling.js","../../../../lib/signaling/v2/trackswitchoffsignaling.js","../../../../lib/signaling/v2/renderhintssignaling.js","../../../../lib/signaling/v2/publisherhintsignaling.js","../../../../lib/signaling/v2/twilioconnectiontransport.js","../../../../lib/signaling/v2/localparticipant.js","../../../lib/signaling/localparticipant.js","../../../../lib/signaling/v2/localtrackpublication.js","../../../lib/signaling/localtrackpublication.js","../../../lib/signaling/index.js","../../../lib/util/support.js","../node_modules/reactstrap/node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/reactstrap/node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prismjs/prism.js","../node_modules/prismjs/components/prism-jsx.min.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/get.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/deburr.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/words.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/utils/reflow.js"],"names":["module","exports","require","hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","includes","key","call","join","default","composeWithDevTools","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","isPlainObject","value","proto","getPrototypeOf","baseProto","createAction","type","prepareAction","actionCreator","prepared","args","Error","payload","meta","error","match","action","setPrototypeOf","MiddlewareArray","Symbol","species","concat","this","arr","prepend","EnhancerArray","freezeDraftable","val","curryGetDefaultMiddleware","options","thunk","middlewareArray","withExtraArgument","extraArgument","getDefaultMiddleware","IS_PRODUCTION","configureStore","rootReducer","curriedGetDefaultMiddleware","reducer","middleware","devTools","preloadedState","enhancers","finalMiddleware","some","item","middlewareEnhancer","finalCompose","trace","defaultEnhancers","storeEnhancers","composedEnhancer","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","builder","addCase","typeOrActionCreator","addMatcher","matcher","addDefaultCase","createSlice","name","_reducer","initialState","reducers","reducerNames","keys","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","state","caseReducers","filter","map","cr","reduce","previousState","caseReducer","result","draft","createReducer","m","forEach","reducerName","prepareCallback","maybeReducerWithPrepare","prepare","actions","nanoid","size","id","Math","random","commonProperties","miniSerializeError","simpleError","property","message","String","createAsyncThunk","typePrefix","payloadCreator","fulfilled","requestId","requestStatus","pending","rejected","serializeError","rejectedWithValue","aborted","condition","AC","AbortController","signal","addEventListener","dispatchEvent","onabort","removeEventListener","reason","throwIfAborted","abort","assign","dispatch","getState","extra","abortReason","idGenerator","abortController","conditionResult","then","abortedPromise","Promise","_","reject","getPendingMeta","race","resolve","rejectWithValue","RejectWithValue","fulfillWithValue","FulfillWithMeta","finalAction","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","queueMicrotask","bind","global","globalThis","promise","createQueueWithTimer","timeout","notify","setTimeout","requestAnimationFrame","eventProp","asLocalTrack","timeoutMS","eventTarget","event","e","SDK_NAME","SDK_VERSION","packageInfo","version","SDP_FORMAT","hardwareDevicePublisheriPad","die","msg","s","isDraft","DRAFT_STATE","isDraftable","Ctor","constructor","Function","objectCtorString","DRAFTABLE","isMap","isSet","each","obj","iter","enumerableOnly","getArchtype","ownKeys","entry","index","thing","type_","has","prop","get","set","propOrOldValue","t","add","is","x","y","target","hasMap","Map","hasSet","Set","latest","copy_","base_","shallowCopy","base","slice","descriptors","getOwnPropertyDescriptors","desc","writable","configurable","enumerable","create","freeze","deep","isFrozen","clear","delete","dontMutateFrozenCollections","getPlugin","pluginKey","plugin","plugins","loadPlugin","implementation","getCurrentScope","currentScope","usePatchesInScope","scope","patchListener","patches_","inversePatches_","patchListener_","revokeScope","leaveScope","drafts_","revokeDraft","parent_","enterScope","immer","immer_","canAutoFreeze_","unfinalizedDrafts_","revoke_","revoked_","processResult","baseDraft","isReplaced","useProxies_","willFinalizeES5_","modified_","finalize","maybeFreeze","generateReplacementPatches_","NOTHING","undefined","rootScope","path","childValue","finalizeProperty","scope_","finalized_","draft_","resultEach","generatePatches_","parentState","targetObject","rootPath","targetIsSet","res","assigned_","autoFreeze_","peek","getDescriptorFromProto","source","getOwnPropertyDescriptor","markChanged","prepareCopy","createProxy","parent","proxyMap_","proxySet_","isManual_","traps","objectTraps","arrayTraps","Proxy","revocable","revoke","proxy","createES5Proxy_","current","currentImpl","copy","archType","hasChanges_","copyHelper","from","enableES5","proxyProperty","markChangesSweep","drafts","hasArrayChanges","hasObjectChanges","baseValue","baseIsDraft","descriptor","defineProperty","markChangesRecursively","object","min","hasSymbol","hasProxies","Reflect","for","iterator","getOwnPropertySymbols","getOwnPropertyNames","currentState","Number","isNaN","deleteProperty","owner","fn","Immer","config","recipe","defaultBase","self","_this","produce","_this2","hasError","p","ip","produceWithPatches","patches","inversePatches","n","nextState","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","patch","op","applyPatchesImpl","applyPatches_","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","console","ReflectOwnKeys","R","ReflectApply","receiver","NumberIsNaN","EventEmitter","init","once","emitter","errorListener","removeListener","resolver","eventTargetAgnosticAddListener","handler","flags","on","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","events","existing","warning","newListener","emit","unshift","warned","w","count","warn","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","evlistener","ret","unwrapListeners","arrayClone","listenerCount","wrapListener","RangeError","setMaxListeners","getMaxListeners","doError","er","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","pop","spliceOne","off","removeAllListeners","rawListeners","eventNames","r","f","clsx","isNum","v","isBool","isStr","isFn","parseClassName","isToastIdValid","toastId","canUseDom","document","createElement","canBeRendered","content","isValidElement","POSITION","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","TYPE","INFO","SUCCESS","WARNING","ERROR","DEFAULT","cssTransition","enter","exit","appendPosition","collapse","collapseDuration","children","preventExitTransition","done","nodeRef","isIn","enterClassName","exitClassName","baseClassName","useRef","animationStep","onEntered","node","Event","className","onExited","duration","scrollHeight","style","minHeight","height","transition","padding","margin","collapseToast","useLayoutEffect","onEnter","useEffect","onExit","React","eventManager","emitQueue","callback","cb","cancelEmit","timers","clearTimeout","timer","useToastContainer","props","forceUpdate","useReducer","useState","toastIds","setToastIds","containerRef","toastToRender","isToastActive","indexOf","instance","toastKey","displayedToast","queue","containerId","getToast","clearWaitingQueue","limit","removeToast","dequeueToast","appendToast","toastContent","toastProps","staleId","buildToast","delay","enableMultiContainer","updateId","isNotValid","data","closeToast","isNotAnUpdate","toastAutoClose","containerAutoClose","isLoading","theme","icon","closeButton","rtl","toastClassName","bodyClassName","toastStyle","bodyStyle","onClick","pauseOnHover","pauseOnFocusLoss","draggable","draggablePercent","draggableDirection","closeOnClick","progressClassName","progressStyle","autoClose","hideProgressBar","progress","role","deleteToast","queueLen","freeSlot","toDequeue","onOpen","onClose","cloneElement","getToastToRender","toRender","collection","values","newestOnTop","reverse","toast","getX","targetTouches","clientX","getY","clientY","useToast","isRunning","setIsRunning","setPreventExitTransition","toastRef","drag","start","delta","removalDistance","canCloseOnClick","canDrag","boundingRect","didMove","syncProps","onDragStart","onDragMove","onDragEnd","getBoundingClientRect","nativeEvent","offsetWidth","offsetHeight","onDragTransitionEnd","top","bottom","left","right","pauseToast","playToast","transform","opacity","abs","hasFocus","bindFocusEvents","eventHandlers","onMouseDown","onTouchStart","onMouseUp","onTouchEnd","onMouseEnter","onMouseLeave","CloseButton","ariaLabel","stopPropagation","viewBox","fillRule","d","ProgressBar","hide","userStyle","controlledProgress","animationDuration","animationPlayState","defaultClassName","cx","animationEvent","defaultProps","Svg","rest","width","fill","Icons","info","success","spinner","Toast","Transition","cssClasses","isProgressControlled","maybeIcon","iconProps","Icon","ref","renderCloseButton","Bounce","ToastContainer","getClassName","toastList","containerStyle","pointerEvents","latestInstance","containerDomNode","containerConfig","containers","lazy","generateToastId","substring","getToastId","dispatchToast","body","appendChild","render","mergeOptions","createToastByType","loading","resetParams","input","baseParams","params","update","dismiss","dark","isActive","container","oldOptions","oldContent","nextOptions","onChange","configure","containerInstance","removeChild","isUndefined","isObject","isFunction","l","isArrayBuffer","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","navigator","product","merge","assignValue","extend","a","b","thisArg","trim","str","replace","stripBOM","charCodeAt","formatProdErrorMessage","code","$$observable","observable","randomString","split","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","createStore","enhancer","_ref2","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","subscribe","isSubscribed","splice","replaceReducer","nextReducer","_ref","outerSubscribe","observer","observeState","next","unsubscribe","combineReducers","reducerKeys","finalReducers","process","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","_i","_key","previousStateForKey","nextStateForKey","compose","_len","funcs","applyMiddleware","middlewares","store","_dispatch","middlewareAPI","chain","_objectSpread","_extends","freeGlobal","freeSelf","root","_objectWithoutPropertiesLoose","excluded","sourceKeys","TwilioErrorByCode","Cache","maxSize","_maxSize","_size","_values","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","pathCache","setCache","getCache","normalizePath","part","isQuoted","charAt","shouldBeQuoted","hasLeadingNumber","test","hasSpecialChars","setter","parts","getter","safe","segments","idx","isBracket","matches","baseIsNative","getValue","baseHas","hasPath","newState","getRawTag","objectToString","symToStringTag","toStringTag","_typeof","o","baseToString","Condition","operator","addNote","note","_notes","DocumentCondition","CompoundCondition","conditions","_DocumentCondition","ITSELF","FieldCondition","field","NULL_CONDITION","isCompound","optimizedCompoundCondition","flattenConditions","aggregatedResult","flatConditions","currentNode","identity","ignoreValue","objectKeysSkipIgnore","anyObject","pushIfNonNullCondition","buildAnd","defaultInstructionParsers","compound","instruction","parse","query","ObjectQueryParser","instructions","_instructions","_fieldInstructionContext","_documentInstructionContext","_options","_objectKeys","operatorToConditionName","defaultOperatorName","mergeFinalConditions","all","fieldContext","hasOperators","skipIgnore","useIgnoreValue","documentContext","setParse","parseField","parentQuery","parseInstruction","validate","parseFieldOperators","getInterpreter","interpreters","interpret","defaultInterpreterName","ensureIsArray","ensureIsNonEmptyArray","ensureIs","$and","queries","$or","$nor","$not","RegExp","$elemMatch","$size","$in","$nin","$all","$mod","$exists","$gte","Date","$gt","$lt","$lte","$eq","$ne","$regex","rawValue","$options","$where","MongoQueryParser","_ObjectQueryParser","and","allParsingInstructions","items","compare","isArrayAndNotNumericField","getField","testValueOrArray","defaultGet","getObjectFieldCursor","dotIndex","lastIndexOf","getObjectField","paths","createJsInterpreter","operators","rawOptions","getInterpreterName","numberOfArguments","interpreterName","defaultContext","createInterpreter","or","every","eq","ne","lte","lt","gt","gte","exists","mod","regex","within","nin","elemMatch","allInterpreters","in","toPrimitive","getTime","toJSON","comparePrimitives","createFactory","parser","forPrimitives","ast","translate","defaultParsers","wrapArray","TYPE_FIELD","isSubjectType","getSubjectClassName","modelName","detectSubjectType","subject","copyArrayTo","dest","mergePrioritized","array","anotherArray","j","merged","priority","getOrDefault","defaultValue","Rule","rule","fields","fieldMatcher","conditionsMatcher","resolveAction","inverted","_conditionsMatcher","_matchConditions","matchesConditions","matchesField","_matchField","cloneLinkedItem","prev","defaultActionEntry","rules","defaultSubjectEntry","analyze","_hasPerFieldRules","RuleIndex","_ruleOptions","_anyAction","anyAction","_anySubjectType","anySubjectType","_detectSubjectType","_rules","_indexedRules","_buildIndexFor","ability","_emit","rawRules","indexedRules","subjects","k","subjectRules","possibleRulesFor","subjectType","actionRules","anyActionRules","rulesFor","linkedItem","tail","currentTail","unlinkItem","PureAbility","can","relevantRuleFor","cannot","defaultInstructions","defaultInterpreters","mongoQueryMatcher","REGEXP_SPECIAL_CHARS","REGEXP_ANY","REGEXP_STARS","REGEXP_DOT","detectRegexpPattern","string","quantifier","pattern","escapeRegexp","fieldPatternMatcher","patterns","createPattern","Ability","_PureAbility","RuleBuilder","_rule","because","AbilityBuilder","AbilityType","_AbilityType","build","conditionsOrFields","NativeError","ForbiddenError","captureStackTrace","setDefaultMessage","messageOrFn","_defaultErrorMessage","setMessage","throwUnlessCan","getSubjectTypeName","getDefaultErrorMessage","utils","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","headers","defaults","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","encoder","JSON","stringify","stringifySafely","transformResponse","strictJSONParsing","responseType","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","status","common","method","Cancel","__CANCEL__","nativeCreate","getNative","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","entries","isKeyable","__data__","isSymbol","NOT_FOUND","defaultEqualityCheck","defaultMemoize","func","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","resultEqualityCheck","comparator","createCacheKeyComparator","cache","equals","put","getEntries","createSingletonCache","cacheIndex","findIndex","createLruCache","memoized","matchingEntry","find","clearCache","createSelectorCreator","memoize","memoizeOptionsFromArgs","_len2","_key2","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption2","finalMemoizeOptions","dependencies","dep","dependencyTypes","getDependencies","memoizedResultFunc","selector","lastResult","recomputations","resetRecomputations","createSelector","baseAssignValue","baseForOwn","baseIteratee","iteratee","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","Manager","_React$useState","referenceNode","setReferenceNode","hasUnmounted","handleSetReferenceNode","Provider","unwrapArray","safeInvoke","setRef","fromEntries","acc","useIsomorphicLayoutEffect","getWindow","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","max","round","getUAString","uaData","userAgentData","brands","brand","userAgent","isLayoutViewport","element","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getWindowScroll","win","scrollLeft","pageXOffset","scrollTop","pageYOffset","getNodeName","nodeName","toLowerCase","getDocumentElement","documentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","rect","isElementScaled","scroll","offsets","getNodeScroll","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","parentNode","host","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","isFirefox","css","perspective","contain","willChange","getContainingBlock","auto","basePlacements","end","clippingParents","viewport","popper","reference","variationPlacements","placement","placements","modifierPhases","order","modifiers","visited","sort","modifier","requires","requiresIfExists","depModifier","debounce","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","mergeByName","enabled","_ref$options","effect","cleanupFn","noopFn","_state$elements","rects","reset","_state$orderedModifie","_state$orderedModifie2","destroy","onFirstUpdate","passive","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","hash","getOppositePlacement","matched","getOppositeVariationPlacement","contains","child","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","clientWidth","clientHeight","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","offset","multiply","axis","mathMax","mathMin","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","createPopper","_options$scroll","_options$resize","resize","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","arrow","removeAttribute","setAttribute","initialStyles","attribute","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","check","_loop","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","querySelector","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","EMPTY_MODIFIERS","NOOP","NOOP_PROMISE","Popper","_ref$placement","_ref$strategy","_ref$modifiers","referenceElement","innerRef","popperElement","setPopperElement","_React$useState2","setArrowElement","_usePopper","prevOptions","optionsWithDefaults","setState","updateStateModifier","ReactDOM","popperOptions","newOptions","isEqual","popperInstanceRef","popperInstance","defaultCreatePopper","usePopper","childrenProps","arrowProps","Reference","refHandler","Boolean","globalCssModule","getScrollbarWidth","scrollDiv","scrollbarWidth","setScrollbarWidth","paddingRight","isBodyOverflowing","innerWidth","getOriginalBodyPadding","parseInt","getPropertyValue","conditionallyUpdateScrollbar","fixedContent","querySelectorAll","bodyPadding","mapToCssModules","cssModule","c","omit","omitKeys","pick","pickKeys","warnOnce","deprecated","propType","explanation","propName","componentName","DOMElement","targetPropType","oneOfType","PropTypes","shape","any","tagPropType","$$typeof","symbol","arrayOf","TransitionTimeouts","Fade","Collapse","Modal","Carousel","Offcanvas","TransitionPropTypeKeys","TransitionStatuses","ENTERING","ENTERED","EXITING","EXITED","keyCodes","esc","space","tab","up","down","home","PopperPlacements","canUseDOM","isReactRefObj","getTag","toNumber","other","valueOf","isBinary","tag","findDOMElements","selection","isArrayOrNodeList","els","getTarget","allElements","defaultToggleEvents","addMultipleEventListeners","_els","useCapture","el","focusableElements","propTypes","fluid","bool","Container","Tag","containerClass","rowColsPropType","number","noGutters","form","xs","sm","md","lg","xl","xxl","widths","Row","colClasses","colWidth","colSize","isXs","colWidths","stringOrNumberProp","columnProps","getColumnSizeClass","getColumnClasses","columnProp","colSizeInterfix","colClass","Col","modifiedAttributes","light","full","fixed","sticky","color","expand","Navbar","getExpandClass","NavbarBrand","NavbarText","NavbarToggler","tabs","pills","vertical","horizontal","justified","navbar","card","Nav","getVerticalClass","active","NavItem","disabled","href","NavLink","preventDefault","Component","listTag","listClassName","Breadcrumb","ListTag","label","listClasses","BreadcrumbItem","block","outline","close","Button","btnOutlineColor","defaultAriaLabel","onBlur","onFocus","ButtonToggle","toggled","focus","DropdownContext","createContext","a11y","oneOf","group","isOpen","nav","toggle","inNavbar","setActiveFromChild","menuRole","preventDefaultKeys","Dropdown","addEvents","handleDocumentClick","handleKeyDown","removeEvents","handleMenuRef","createRef","menuRef","getContextValue","dropup","onMenuRef","componentDidMount","handleProps","componentDidUpdate","prevProps","componentWillUnmount","getContainer","getMenu","getMenuCtrl","_$menuCtrl","getItemType","getMenuItems","menuContainer","which","menu","clickIsInContainer","clickIsInInput","classList","tagName","clickIsInMenu","isTargetMenuItem","getAttribute","isTargetMenuCtrl","isTab","click","ctrlKey","$menuitems","charPressed","fromCharCode","textContent","attrs","subItemIsActive","Children","dropdownItem","dropdown","dropstart","dropend","show","onKeyDown","ButtonDropdown","ButtonGroup","ButtonToolbar","divider","header","text","DropdownItem","getTabIndex","getRole","tabIndex","contextType","isRequired","flip","persist","directionPositionMap","DropdownMenu","poperPlacement","poperModifiers","combinedStyle","tagRef","createPortal","caret","DropdownToggle","baseClass","baseClassActive","appear","otherProps","transitionProps","childProps","AccordionContext","flush","open","Accordion","accordionContext","useMemo","defaultOpen","stayOpen","setOpen","accordionId","targetId","AccordionHeader","useContext","buttonClasses","collapsed","AccordionItem","transitionStatusToClassHash","dimension","getDimension","onEntering","isAppearing","onExiting","collapseClass","getTransitionClass","pill","Badge","inverse","Card","CardGroup","CardDeck","CardColumns","CardBody","CardLink","CardFooter","CardHeader","CardImg","cardImgClassName","CardImgOverlay","CarouselItem","startAnimation","CustomEvent","slide","directionClassName","orderClassName","itemClasses","contextTypes","CarouselContext","handleKeyPress","renderItems","hoverStart","hoverEnd","handleTouchStart","handleTouchEnd","touchStartX","touchStartY","activeIndex","indicatorClicked","ride","setInterval","getDerivedStateFromProps","nextProps","prevState","clearInterval","interval","cycleInterval","pause","mouseEnter","mouseLeave","evt","keyboard","keyCode","previous","enableTouch","changedTouches","screenX","screenY","currentX","currentY","diffX","carouselItems","fade","outerClasses","innerClasses","controlLeft","controlRight","indicators","wrappedIndicators","onClickHandler","childContextTypes","CarouselControl","directionText","anchorClasses","iconClasses","screenReaderClasses","cursor","CarouselIndicators","indicatorClasses","caption","CarouselCaption","captionHeader","captionText","controls","autoPlay","defaultActiveIndex","goToIndex","UncontrolledCarousel","animating","nextIndex","newIndex","slides","src","alt","altText","CardSubtitle","CardText","CardTitle","popperClassName","placementPrefix","arrowClassName","hideArrow","boundariesElement","onClosed","PopperContent","setTargetNode","getTargetNode","getRef","_element","childNodes","targetNode","getContainerNode","renderChildren","_arrowClassName","_popperClassName","modifierNames","baseModifiers","extendedModifiers","popperTransition","ReactPopper","popperPlacement","PopperTargetHelper","popperManager","innerClassName","autohide","trigger","DEFAULT_DELAYS","isInDOMSubtree","subtreeRoot","isInDOMSubtrees","subtreeRoots","subTreeRoot","TooltipPopoverWrapper","_targets","currentTargetElement","addTargetEvents","removeTargetEvents","showWithDelay","hideWithDelay","onMouseOverTooltipContent","onMouseLeaveTooltipContent","onEscKeyDown","_isMounted","updateTarget","clearShowTimeout","clearHideTimeout","_hideTimeout","_showTimeout","getDelay","_popover","getCurrentTarget","parentElement","currentTarget","composedPath","triggers","addEventOnTargets","isBubble","removeEventOnTargets","newTarget","popperClasses","onMouseOver","Popover","UncontrolledPopover","PopoverHeader","PopoverBody","bar","multi","animated","striped","barClassName","barStyle","barAriaValueText","barAriaLabelledBy","Progress","percent","progressClasses","progressBarProps","Portal","defaultNode","noop","FadePropTypes","autoFocus","centered","fullscreen","scrollable","labelledBy","backdrop","onOpened","wrapClassName","modalClassName","backdropClassName","contentClassName","external","zIndex","backdropTransition","modalTransition","unmountOnClose","returnFocusAfterClose","trapFocus","propsToOmit","mountOnEnter","_originalBodyPadding","getFocusableChildren","handleBackdropClick","handleBackdropMouseDown","handleEscape","handleStaticBackdropAnimation","handleTab","manageFocusAfterClose","clearBackdropAnimationTimeout","showStaticBackdropAnimation","setFocus","ev","_dialog","modalIndex","openCount","getFocusedChild","currentFocus","focusableChildren","activeElement","_mouseDownElement","totalFocusable","focusedIndex","shiftKey","_backdropAnimationTimeout","_triggeringElement","_mountContainer","modalOpenClassName","modalOpenClassNameRegex","renderModalDialog","dialogBaseClass","isModalHidden","display","modalAttributes","onKeyUp","hasTransition","Backdrop","wrapTag","closeAriaLabel","ModalHeader","WrapTag","ModalBody","ModalFooter","Tooltip","bordered","borderless","hover","responsive","responsiveTag","Table","ResponsiveTag","table","responsiveClassName","numbered","ListGroup","getHorizontalClass","inline","Form","submit","valid","tooltip","FormFeedback","validMode","row","switch","floating","FormGroup","formCheck","FormText","bsSize","invalid","plaintext","addon","Input","checkInput","isNotaNumber","selectInput","formControlClass","InputGroup","InputGroupText","hidden","Label","htmlFor","heading","middle","Media","defaultTag","media","offcanvasTransition","offcanvasIndex","_backdrop","isOffcanvasHidden","offcanvasAttributes","visibility","OffcanvasBody","OffcanvasHeader","Pagination","PaginationItem","first","last","PaginationLink","defaultCaret","TabContext","activeTab","TabContent","activeTabId","tabId","TabPane","getClasses","Consumer","closeClassName","unmountOnExit","Alert","closeClasses","alertTransition","toastTransition","ToastBody","charCode","ToastHeader","tagClassName","iconProp","xmlns","preserveAspectRatio","focusable","handleDisabledOnClick","ListGroupItem","ListGroupItemHeading","ListGroupItemText","List","forwardRef","ListInlineItem","UncontrolledButtonDropdown","toggler","toggleEvents","UncontrolledCollapse","togglers","removeEventListeners","UncontrolledDropdown","onToggle","UncontrolledTooltip","Spinner","animation","Placeholder","PlaceholderButton","bubbles","cancelable","detail","createEvent","initCustomEvent","O","propIsEnumerable","propertyIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","to","toObject","g","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","nextTick","title","browser","env","argv","versions","binding","cwd","chdir","dir","umask","_objectSpread2","defineProperties","arrayLikeKeys","baseKeys","isArrayLike","baseGetTag","isObjectLike","reactIs","REACT_STATICS","displayName","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","signaling","mediaSection","reIsDeepProp","reIsPlainProp","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","createThunkMiddleware","snakeCase","createCompounder","word","ReactReduxContext","batch","getBatch","nullListeners","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","contextValue","Context","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestStoreState","latestSelectedState","storeState","newSelectedState","stack","checkForUpdates","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","useDebugValue","newBatch","useSelector","baseClone","circulars","clones","nodeType","cloneNode","clone","errorToString","regExpToString","symbolToString","SYMBOL_REGEXP","printSimpleValue","quoteStrings","typeOf","printNumber","toISOString","printValue","mixed","required","notOneOf","notType","originalValue","isCast","defined","email","url","uuid","lowercase","uppercase","lessThan","moreThan","positive","negative","integer","date","boolean","isValue","noUnknown","isSchema","__isYupSchema__","refs","otherwise","schema","branch","toArray","strReg","ValidationError","formatError","isError","errorOrErrors","super","errors","runTests","endEarly","tests","nestedErrors","prefixes","isContext","isSibling","prefix","cast","describe","isRef","__isYupRef","createValidation","sync","Ref","createError","overrides","nextParams","mapValues","ctx","validOrError","catch","OPTIONS","getIn","lastPart","lastPartDebug","_part","substr","innerType","_type","parentPath","ReferenceSet","description","resolveAll","newItems","removeItems","BaseSchema","deps","transforms","_mutate","_typeError","_whitelist","_blacklist","exclusiveTests","spec","withMutation","typeError","locale","strip","strict","abortEarly","recursive","nullable","presence","_typeCheck","_value","_whitelistError","_blacklistError","cloneDeep","before","combined","mergedSpec","isType","resolvedSchema","_cast","assert","formattedValue","formattedResult","getDefault","_validate","initialTests","finalTests","maybeCb","validateSync","isValid","isValidSync","_getDefault","def","isStrict","_isPresent","exclusive","notRequired","isNullable","opts","isExclusive","when","enums","valids","resolved","invalids","alias","optional","Mixed","isAbsent","BooleanSchema","isTrue","isFalse","rEmail","rUrl","rUUID","isTrimmed","objStringTag","StringSchema","strValue","excludeEmptyString","search","ensure","toUpperCase","NumberSchema","parsed","NaN","parseFloat","less","more","isInteger","truncate","_method","avail","isoReg","invalidDate","DateSchema","timestamp","struct","numericKeys","minutesOffset","exec","UTC","isoParse","prepareParam","param","INVALID_DATE","Infinity","ii","_err$path","sortByKeyOrder","defaultSort","ObjectSchema","_sortErrors","_nodes","_excludedEdges","_options$stripUnknown","stripUnknown","intermediateValue","innerOptions","__validating","isChanged","fieldValue","inputValue","fieldSpec","nextFields","schemaOrRef","getDefaultFromShape","dft","additions","excludes","excludedEdges","edges","nodes","addNode","depPath","toposort","sortFields","picked","fromGetter","newObj","noAllow","unknownKeys","known","unknown","allow","transformKeys","mapKeys","camelCase","constantCase","ArraySchema","_subType","_opts","castArray","castElement","_options$abortEarly","_options$recursive","of","original","compact","rejector","setLocale","custom","baseMatches","baseMatchesProperty","_defineProperty","baseFor","_inheritsLoose","subClass","superClass","reIsUint","webpackPolyfill","deprecate","baseIsEqualDeep","baseIsEqual","bitmask","customizer","stubFalse","freeExports","freeModule","Buffer","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","encode","encodeURIComponent","paramsSerializer","serializedParams","hashmarkIndex","request","response","isAxiosError","fileName","lineNumber","columnNumber","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","onCanceled","requestData","requestHeaders","cancelToken","auth","username","password","unescape","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","onreadystatechange","readyState","responseURL","onerror","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancel","send","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","defaultLogger","_b","WebSocket","denominator","participantSignaling","_setPrototypeOf","__proto__","castPath","isArguments","isIndex","isLength","toKey","hasFunc","isKey","stringToPath","funcToString","baseIsArguments","objectProto","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","SetCache","arraySome","cacheHas","equalFunc","isPartial","arrLength","othLength","arrStacked","othStacked","seen","arrValue","othValue","compared","othIndex","srcValue","arrayReduce","deburr","words","reApos","reHasUnicode","_toPropertyKey","hint","prim","Fragment","only","Can","_isAllowed","_ability","_unsubscribeFromAbility","_connectToAbility","_canRender","an","not","I","do","passThrough","_renderChildren","PureComponent","createContextualCan","Getter","h","hasElementType","hasArrayBuffer","equal","it","capitalize","sorted","outgoingEdges","edge","makeOutgoingEdges","nodesHash","makeNodesHash","visit","predecessors","nodeRep","outgoing","uniqueNodes","GoogleOAuthContext","GoogleOAuthProvider","clientId","onScriptLoadSuccess","onScriptLoadError","scriptLoadedSuccessfully","setScriptLoadedSuccessfully","onScriptLoadSuccessRef","onScriptLoadErrorRef","scriptTag","async","defer","onload","_a","useLoadGsiScript","predicate","DataView","WeakMap","toSource","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ctorString","freeProcess","types","arrayFilter","stubArray","nativeGetSymbols","getSymbols","baseTimes","inherited","isArr","isArg","isBuff","skipIndexes","Uint8Array","baseGetAllKeys","arrayPush","keysFunc","symbolsFunc","StrictMode","Profiler","q","Suspense","u","z","A","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","B","C","updater","D","E","isReactComponent","F","isPureReactComponent","G","H","__self","__source","J","_owner","L","M","N","escape","K","P","Q","_status","_result","S","T","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","_payload","_init","memo","useCallback","useImperativeHandle","aa","ba","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","setAttributeNS","xlinkHref","ra","sa","ta","ua","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","construct","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","setValue","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","ab","bb","eb","db","fb","selected","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","mathml","svg","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","setProperty","ub","menuitem","area","br","col","embed","hr","img","keygen","link","track","wbr","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","bc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","log","LN2","dd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","nd","od","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","timeStamp","now","isTrusted","td","ud","view","vd","Ad","pageX","pageY","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","location","repeat","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","datetime","month","range","tel","time","week","me","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","capture","Nb","ef","ff","parentWindow","gf","hf","je","char","ke","jf","kf","lf","mf","nf","__html","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","mode","elementType","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","th","uh","_workInProgressVersionPrimary","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","hi","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createElementNS","createTextNode","V","Hi","Ii","W","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","ceil","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","kk","hk","unstable_observedBits","unmount","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","inject","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","performance","MessageChannel","unstable_forceFrameRate","cancelAnimationFrame","floor","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","Axios","mergeConfig","axios","createInstance","defaultConfig","instanceConfig","CancelToken","isCancel","VERSION","promises","spread","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","responseInterceptorChain","newConfig","onFulfilled","onRejected","getUri","handlers","use","eject","transformData","throwIfCancellationRequested","throwIfRequested","fns","normalizedName","write","expires","domain","secure","cookie","toGMTString","decodeURIComponent","remove","isAbsoluteURL","combineURLs","requestedURL","relativeURL","ignoreDuplicateOf","line","originURL","msie","urlParsingNode","resolveURL","protocol","hostname","port","pathname","requestURL","deprecatedWarnings","formatMessage","opt","allowUnknown","executor","resolvePromise","token","onfulfilled","_resolve","jsx","jsxs","standardizedCandidateStatsKeys","getTracks","kind","localOrRemote","getStatValue","deviceIdConstraint","__read","_c","canvas","originalStop","remoteVideoTrack","Room","room","pcm","PeerConnectionManager","ssrc","_map","pt","subscribed","_remoteLevels","networkQualityInputs","networkQualityReportLevels","NetworkQualityBandwidthStats","NetworkQualityFractionLostStats","NetworkQualityLatencyStats","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propFullName","secret","getShim","ReactPropTypes","bigint","instanceOf","objectOf","exact","checkPropTypes","Prism","_self","lang","uniqueId","plainTextGrammar","manual","disableWorkerMessageHandler","util","tokens","Token","objId","deepClone","getLanguage","setLanguage","language","currentScript","scripts","getElementsByTagName","defaultActivation","no","languages","plain","txt","redef","inside","insert","grammar","newToken","old","DFS","propertyType","highlightAll","highlightAllUnder","hooks","highlightElement","insertHighlightedCode","highlightedCode","Worker","worker","filename","immediateClose","highlight","tokenize","tokenList","LinkedList","addAfter","head","matchGrammar","callbacks","matchedStr","matchPattern","pos","lookbehind","lastIndex","lookbehindLength","startNode","startPos","rematch","cause","patternObj","greedy","reach","removeCount","matchStr","after","removeFrom","removeRange","nestedRematch","newNode","aliases","script","highlightAutomaticallyCallback","WorkerGlobalScope","markup","includedCdataInside","attrName","xml","ssml","atom","rss","addInlined","addAttribute","clike","javascript","js","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","pre","extension","autoloader","loadLanguages","xhr","loadFile","comma","parseRange","lines","fileHighlight","logged","comment","openedBraces","nativeObjectToString","isOwn","unmasked","memoizeCapped","rePropName","reEscapeChar","quote","subString","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","reIsHostCtor","funcProto","reIsNative","coreJsData","maskSrcKey","uid","IE_PROTO","assocIndexOf","getMapData","arrayMap","symbolProto","createBaseFor","fromRight","iterable","typedArrayTags","isPrototype","nativeKeys","overArg","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","objValue","COMPARE_PARTIAL_FLAG","pairs","LARGE_ARRAY_SIZE","equalArrays","equalByTag","equalObjects","argsTag","arrayTag","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","setCacheAdd","setCacheHas","mapToArray","setToArray","symbolValueOf","byteLength","byteOffset","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","resIndex","isStrictComparable","hasIn","baseGet","baseHasIn","baseProperty","basePropertyDeep","accumulator","initAccum","deburrLetter","reLatin","reComboMark","basePropertyOf","asciiWords","hasUnicodeWord","unicodeWords","guard","reAsciiWord","reHasUnicodeWord","rsAstralRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","reUnicodeWord","upperFirst","createCaseFirst","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","trailing","baseSlice","asciiToArray","unicodeToArray","rsAstral","rsCombo","rsFitz","rsNonAstral","rsSymbol","reUnicode","UNMOUNTED","_React$Component","initialStatus","isMounting","appearStatus","nextCallback","_proto","updateStatus","nextStatus","cancelNextCallback","getTimeouts","mounting","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","_this$props","TransitionGroupContext"],"mappings":"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","file":"static/js/15.8d5b4aad.chunk.js","sourcesContent":["/**\n * Copyright (c) 2013-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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n /**\r\n * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n */\r\n name?: string\r\n /**\r\n * action creators functions to be available in the Dispatcher.\r\n */\r\n actionCreators?: ActionCreator[] | { [key: string]: ActionCreator }\r\n /**\r\n * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n *\r\n * @default 500 ms.\r\n */\r\n latency?: number\r\n /**\r\n * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n *\r\n * @default 50\r\n */\r\n maxAge?: number\r\n /**\r\n * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n * functions.\r\n */\r\n serialize?:\r\n | boolean\r\n | {\r\n /**\r\n * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n * - `false` - will handle also circular references.\r\n * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n * For each of them you can indicate if to include (by setting as `true`).\r\n * For `function` key you can also specify a custom function which handles serialization.\r\n * See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n */\r\n options?:\r\n | undefined\r\n | boolean\r\n | {\r\n date?: true\r\n regex?: true\r\n undefined?: true\r\n error?: true\r\n symbol?: true\r\n map?: true\r\n set?: true\r\n function?: true | ((fn: (...args: any[]) => any) => string)\r\n }\r\n /**\r\n * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n * key. So you can deserialize it back while importing or persisting data.\r\n * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n */\r\n replacer?: (key: string, value: unknown) => any\r\n /**\r\n * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n * as an example on how to serialize special data types and get them back.\r\n */\r\n reviver?: (key: string, value: unknown) => any\r\n /**\r\n * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n */\r\n immutable?: any\r\n /**\r\n * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n */\r\n refs?: any\r\n }\r\n /**\r\n * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n */\r\n actionSanitizer?: (action: A, id: number) => A\r\n /**\r\n * function which takes `state` object and index as arguments, and should return `state` object back.\r\n */\r\n stateSanitizer?: (state: S, index: number) => S\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsDenylist instead.\r\n */\r\n actionsBlacklist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n * @deprecated Use actionsAllowlist instead.\r\n */\r\n actionsWhitelist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsDenylist?: string | string[]\r\n /**\r\n * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n */\r\n actionsAllowlist?: string | string[]\r\n /**\r\n * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n */\r\n predicate?: (state: S, action: A) => boolean\r\n /**\r\n * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n * Available only for Redux enhancer, for others use `autoPause`.\r\n *\r\n * @default true\r\n */\r\n shouldRecordChanges?: boolean\r\n /**\r\n * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n * If not specified, will commit when paused. Available only for Redux enhancer.\r\n *\r\n * @default \"@@PAUSED\"\"\r\n */\r\n pauseActionType?: string\r\n /**\r\n * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n *\r\n * @default false\r\n */\r\n autoPause?: boolean\r\n /**\r\n * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n * Available only for Redux enhancer.\r\n *\r\n * @default false\r\n */\r\n shouldStartLocked?: boolean\r\n /**\r\n * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n *\r\n * @default true\r\n */\r\n shouldHotReload?: boolean\r\n /**\r\n * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n *\r\n * @default false\r\n */\r\n shouldCatchErrors?: boolean\r\n /**\r\n * If you want to restrict the extension, specify the features you allow.\r\n * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n * Otherwise, you'll get/set the data right from the monitor part.\r\n */\r\n features?: {\r\n /**\r\n * start/pause recording of dispatched actions\r\n */\r\n pause?: boolean\r\n /**\r\n * lock/unlock dispatching actions and side effects\r\n */\r\n lock?: boolean\r\n /**\r\n * persist states on page reloading\r\n */\r\n persist?: boolean\r\n /**\r\n * export history of actions in a file\r\n */\r\n export?: boolean | 'custom'\r\n /**\r\n * import history of actions from a file\r\n */\r\n import?: boolean | 'custom'\r\n /**\r\n * jump back and forth (time travelling)\r\n */\r\n jump?: boolean\r\n /**\r\n * skip (cancel) actions\r\n */\r\n skip?: boolean\r\n /**\r\n * drag and drop actions in the history list\r\n */\r\n reorder?: boolean\r\n /**\r\n * dispatch custom actions or action creators\r\n */\r\n dispatch?: boolean\r\n /**\r\n * generate tests for the selected actions\r\n */\r\n test?: boolean\r\n }\r\n /**\r\n * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n * Defaults to false.\r\n */\r\n trace?: boolean | ((action: A) => string)\r\n /**\r\n * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n */\r\n traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n (options: DevToolsEnhancerOptions): Compose\r\n (...funcs: StoreEnhancer[]): StoreEnhancer\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n typeof window !== 'undefined' &&\r\n (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n : function () {\r\n if (arguments.length === 0) return undefined\r\n if (typeof arguments[0] === 'object') return compose\r\n return compose.apply(null, arguments as any as Function[])\r\n }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n (options: DevToolsEnhancerOptions): StoreEnhancer\r\n} =\r\n typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n : function () {\r\n return function (noop) {\r\n return noop\r\n }\r\n }\r\n","/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n if (typeof value !== 'object' || value === null) return false\r\n\r\n let proto = Object.getPrototypeOf(value)\r\n if (proto === null) return true\r\n\r\n let baseProto = proto\r\n while (Object.getPrototypeOf(baseProto) !== null) {\r\n baseProto = Object.getPrototypeOf(baseProto)\r\n }\r\n\r\n return proto === baseProto\r\n}\r\n","import type { Action } from 'redux'\r\nimport type {\r\n IsUnknownOrNonInferrable,\r\n IfMaybeUndefined,\r\n IfVoid,\r\n IsAny,\r\n} from './tsHelpers'\r\nimport { hasMatchFunction } from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n P = void,\r\n T extends string = string,\r\n M = never,\r\n E = never\r\n> = {\r\n payload: P\r\n type: T\r\n} & ([M] extends [never]\r\n ? {}\r\n : {\r\n meta: M\r\n }) &\r\n ([E] extends [never]\r\n ? {}\r\n : {\r\n error: E\r\n })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction

=\r\n | ((...args: any[]) => { payload: P })\r\n | ((...args: any[]) => { payload: P; meta: any })\r\n | ((...args: any[]) => { payload: P; error: any })\r\n | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n PA extends PrepareAction | void,\r\n T extends string = string\r\n> = PA extends PrepareAction\r\n ? ActionCreatorWithPreparedPayload<\r\n Parameters,\r\n P,\r\n T,\r\n ReturnType extends {\r\n error: infer E\r\n }\r\n ? E\r\n : never,\r\n ReturnType extends {\r\n meta: infer M\r\n }\r\n ? M\r\n : never\r\n >\r\n : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator {\r\n type: T\r\n match: (action: Action) => action is PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n Args extends unknown[],\r\n P,\r\n T extends string = string,\r\n E = never,\r\n M = never\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with `Args` will return\r\n * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n */\r\n (...args: Args): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n */\r\n (payload?: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} will\r\n * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n */\r\n (noArgument: void): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload\r\n extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n */\r\n (payload: P): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n T extends string = string\r\n> extends BaseActionCreator {\r\n /**\r\n * Calling this {@link redux#ActionCreator} with an argument will\r\n * return a {@link PayloadAction} of type `T` with a payload\r\n * of exactly the type of the argument.\r\n */\r\n (payload: PT): PayloadAction\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n P = void,\r\n T extends string = string,\r\n PA extends PrepareAction

| void = void\r\n> = IfPrepareActionMethodProvided<\r\n PA,\r\n _ActionCreatorWithPreparedPayload,\r\n // else\r\n IsAny<\r\n P,\r\n ActionCreatorWithPayload,\r\n IsUnknownOrNonInferrable<\r\n P,\r\n ActionCreatorWithNonInferrablePayload,\r\n // else\r\n IfVoid<\r\n P,\r\n ActionCreatorWithoutPayload,\r\n // else\r\n IfMaybeUndefined<\r\n P,\r\n ActionCreatorWithOptionalPayload,\r\n // else\r\n ActionCreatorWithPayload\r\n >\r\n >\r\n >\r\n >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction

(\r\n type: T\r\n): PayloadActionCreator\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overridden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n * If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n PA extends PrepareAction,\r\n T extends string = string\r\n>(\r\n type: T,\r\n prepareAction: PA\r\n): PayloadActionCreator['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n function actionCreator(...args: any[]) {\r\n if (prepareAction) {\r\n let prepared = prepareAction(...args)\r\n if (!prepared) {\r\n throw new Error('prepareAction did not return an object')\r\n }\r\n\r\n return {\r\n type,\r\n payload: prepared.payload,\r\n ...('meta' in prepared && { meta: prepared.meta }),\r\n ...('error' in prepared && { error: prepared.error }),\r\n }\r\n }\r\n return { type, payload: args[0] }\r\n }\r\n\r\n actionCreator.toString = () => `${type}`\r\n\r\n actionCreator.type = type\r\n\r\n actionCreator.match = (action: Action): action is PayloadAction =>\r\n action.type === type\r\n\r\n return actionCreator\r\n}\r\n\r\n/**\r\n * Returns true if value is a plain object with a `type` property.\r\n */\r\nexport function isAction(action: unknown): action is Action {\r\n return isPlainObject(action) && 'type' in action\r\n}\r\n\r\n/**\r\n * Returns true if value is an RTK-like action creator, with a static type property and match method.\r\n */\r\nexport function isActionCreator(\r\n action: unknown\r\n): action is BaseActionCreator & Function {\r\n return (\r\n typeof action === 'function' &&\r\n 'type' in action &&\r\n // hasMatchFunction only wants Matchers but I don't see the point in rewriting it\r\n hasMatchFunction(action as any)\r\n )\r\n}\r\n\r\n/**\r\n * Returns true if value is an action with a string type and valid Flux Standard Action keys.\r\n */\r\nexport function isFSA(action: unknown): action is {\r\n type: string\r\n payload?: unknown\r\n error?: unknown\r\n meta?: unknown\r\n} {\r\n return (\r\n isAction(action) &&\r\n typeof action.type === 'string' &&\r\n Object.keys(action).every(isValidKey)\r\n )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType(\r\n actionCreator: PayloadActionCreator\r\n): T {\r\n return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n PA extends PrepareAction | void,\r\n True,\r\n False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n","import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware, StoreEnhancer } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n let elapsed = 0\r\n return {\r\n measureTime(fn: () => T): T {\r\n const started = Date.now()\r\n try {\r\n return fn()\r\n } finally {\r\n const finished = Date.now()\r\n elapsed += finished - started\r\n }\r\n },\r\n warnIfExceeded() {\r\n if (elapsed > maxDelay) {\r\n console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n }\r\n },\r\n }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n Middlewares extends Middleware[]\r\n> extends Array {\r\n constructor(...items: Middlewares)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return MiddlewareArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n concat>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend>>(\r\n ...items: AdditionalMiddlewares\r\n ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new MiddlewareArray(...arr[0].concat(this))\r\n }\r\n return new MiddlewareArray(...arr.concat(this))\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class EnhancerArray<\r\n Enhancers extends StoreEnhancer[]\r\n> extends Array {\r\n constructor(...items: Enhancers)\r\n constructor(...args: any[]) {\r\n super(...args)\r\n Object.setPrototypeOf(this, EnhancerArray.prototype)\r\n }\r\n\r\n static get [Symbol.species]() {\r\n return EnhancerArray as any\r\n }\r\n\r\n concat>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n\r\n concat>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...Enhancers, ...AdditionalEnhancers]>\r\n concat(...arr: any[]) {\r\n return super.concat.apply(this, arr)\r\n }\r\n\r\n prepend>>(\r\n items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend>>(\r\n ...items: AdditionalEnhancers\r\n ): EnhancerArray<[...AdditionalEnhancers, ...Enhancers]>\r\n\r\n prepend(...arr: any[]) {\r\n if (arr.length === 1 && Array.isArray(arr[0])) {\r\n return new EnhancerArray(...arr[0].concat(this))\r\n }\r\n return new EnhancerArray(...arr.concat(this))\r\n }\r\n}\r\n\r\nexport function freezeDraftable(val: T) {\r\n return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n","import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nimport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions {\r\n extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n thunk: false\r\n}\r\n ? never\r\n : O extends { thunk: { extraArgument: infer E } }\r\n ? ThunkMiddleware\r\n : ThunkMiddleware\r\n\r\nexport type CurriedGetDefaultMiddleware = <\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options?: O\r\n) => MiddlewareArray], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n S = any\r\n>(): CurriedGetDefaultMiddleware {\r\n return function curriedGetDefaultMiddleware(options) {\r\n return getDefaultMiddleware(options)\r\n }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n S = any,\r\n O extends Partial = {\r\n thunk: true\r\n immutableCheck: true\r\n serializableCheck: true\r\n actionCreatorCheck: true\r\n }\r\n>(\r\n options: O = {} as O\r\n): MiddlewareArray], never>> {\r\n const {\r\n thunk = true,\r\n immutableCheck = true,\r\n serializableCheck = true,\r\n actionCreatorCheck = true,\r\n } = options\r\n\r\n let middlewareArray = new MiddlewareArray()\r\n\r\n if (thunk) {\r\n if (isBoolean(thunk)) {\r\n middlewareArray.push(thunkMiddleware)\r\n } else {\r\n middlewareArray.push(\r\n thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n )\r\n }\r\n }\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (immutableCheck) {\r\n /* PROD_START_REMOVE_UMD */\r\n let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(immutableCheck)) {\r\n immutableOptions = immutableCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createImmutableStateInvariantMiddleware(immutableOptions)\r\n )\r\n /* PROD_STOP_REMOVE_UMD */\r\n }\r\n\r\n if (serializableCheck) {\r\n let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(serializableCheck)) {\r\n serializableOptions = serializableCheck\r\n }\r\n\r\n middlewareArray.push(\r\n createSerializableStateInvariantMiddleware(serializableOptions)\r\n )\r\n }\r\n if (actionCreatorCheck) {\r\n let actionCreatorOptions: ActionCreatorInvariantMiddlewareOptions = {}\r\n\r\n if (!isBoolean(actionCreatorCheck)) {\r\n actionCreatorOptions = actionCreatorCheck\r\n }\r\n\r\n middlewareArray.unshift(\r\n createActionCreatorInvariantMiddleware(actionCreatorOptions)\r\n )\r\n }\r\n }\r\n\r\n return middlewareArray as any\r\n}\r\n","import type {\r\n Reducer,\r\n ReducersMapObject,\r\n Middleware,\r\n Action,\r\n AnyAction,\r\n StoreEnhancer,\r\n Store,\r\n Dispatch,\r\n PreloadedState,\r\n CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n ThunkMiddlewareFor,\r\n CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n NoInfer,\r\n ExtractDispatchExtensions,\r\n ExtractStoreExtensions,\r\n ExtractStateExtensions,\r\n} from './tsHelpers'\r\nimport { EnhancerArray } from './utils'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback = (\r\n defaultEnhancers: EnhancerArray<[StoreEnhancer<{}, {}>]>\r\n) => E\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> {\r\n /**\r\n * A single reducer function that will be used as the root reducer, or an\r\n * object of slice reducers that will be passed to `combineReducers()`.\r\n */\r\n reducer: Reducer | ReducersMapObject\r\n\r\n /**\r\n * An array of Redux middleware to install. If not supplied, defaults to\r\n * the set of middleware returned by `getDefaultMiddleware()`.\r\n *\r\n * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n */\r\n middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware) => M) | M\r\n\r\n /**\r\n * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n *\r\n * Additional configuration can be done by passing Redux DevTools options\r\n */\r\n devTools?: boolean | DevToolsOptions\r\n\r\n /**\r\n * The initial state, same as Redux's createStore.\r\n * You may optionally specify it to hydrate the state\r\n * from the server in universal apps, or to restore a previously serialized\r\n * user session. If you use `combineReducers()` to produce the root reducer\r\n * function (either directly or indirectly by passing an object as `reducer`),\r\n * this must be an object with the same shape as the reducer map keys.\r\n */\r\n /*\r\n Not 100% correct but the best approximation we can get:\r\n - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n - if it is not, there could be two cases:\r\n - `ReducersMapObject` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState` is correct\r\n - `Reducer` is being passed in. In this case, actually `CombinedState` is wrong and `S` would be correct.\r\n As we cannot distinguish between those two cases without adding another generic parameter,\r\n we just make the pragmatic assumption that the latter almost never happens.\r\n */\r\n preloadedState?: PreloadedState>>\r\n\r\n /**\r\n * The store enhancers to apply. See Redux's `createStore()`.\r\n * All enhancers will be included before the DevTools Extension enhancer.\r\n * If you need to customize the order of enhancers, supply a callback\r\n * function that will receive the original array (ie, `[applyMiddleware]`),\r\n * and should return a new array (such as `[applyMiddleware, offline]`).\r\n * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n */\r\n enhancers?: E | ConfigureEnhancersCallback\r\n}\r\n\r\ntype Middlewares = ReadonlyArray>\r\n\r\ntype Enhancers = ReadonlyArray\r\n\r\nexport interface ToolkitStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares\r\n> extends Store {\r\n /**\r\n * The `dispatch` method of your store, enhanced by all its middlewares.\r\n *\r\n * @inheritdoc\r\n */\r\n dispatch: ExtractDispatchExtensions & Dispatch\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = Middlewares,\r\n E extends Enhancers = Enhancers\r\n> = ToolkitStore, A, M> &\r\n ExtractStoreExtensions\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n S = any,\r\n A extends Action = AnyAction,\r\n M extends Middlewares = [ThunkMiddlewareFor],\r\n E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions): EnhancedStore {\r\n const curriedGetDefaultMiddleware = curryGetDefaultMiddleware()\r\n\r\n const {\r\n reducer = undefined,\r\n middleware = curriedGetDefaultMiddleware(),\r\n devTools = true,\r\n preloadedState = undefined,\r\n enhancers = undefined,\r\n } = options || {}\r\n\r\n let rootReducer: Reducer\r\n\r\n if (typeof reducer === 'function') {\r\n rootReducer = reducer\r\n } else if (isPlainObject(reducer)) {\r\n rootReducer = combineReducers(reducer) as unknown as Reducer\r\n } else {\r\n throw new Error(\r\n '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n )\r\n }\r\n\r\n let finalMiddleware = middleware\r\n if (typeof finalMiddleware === 'function') {\r\n finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n throw new Error(\r\n 'when using a middleware builder function, an array of middleware must be returned'\r\n )\r\n }\r\n }\r\n if (\r\n !IS_PRODUCTION &&\r\n finalMiddleware.some((item: any) => typeof item !== 'function')\r\n ) {\r\n throw new Error(\r\n 'each middleware provided to configureStore must be a function'\r\n )\r\n }\r\n\r\n const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n let finalCompose = compose\r\n\r\n if (devTools) {\r\n finalCompose = composeWithDevTools({\r\n // Enable capture of stack traces for dispatched Redux actions\r\n trace: !IS_PRODUCTION,\r\n ...(typeof devTools === 'object' && devTools),\r\n })\r\n }\r\n\r\n const defaultEnhancers = new EnhancerArray(middlewareEnhancer)\r\n let storeEnhancers: Enhancers = defaultEnhancers\r\n\r\n if (Array.isArray(enhancers)) {\r\n storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n } else if (typeof enhancers === 'function') {\r\n storeEnhancers = enhancers(defaultEnhancers)\r\n }\r\n\r\n const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer\r\n\r\n return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n","import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator {\r\n (...args: any[]): Action\r\n type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder {\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n actionCreator: ActionCreator,\r\n reducer: CaseReducer>\r\n ): ActionReducerMapBuilder\r\n /**\r\n * Adds a case reducer to handle a single exact action type.\r\n * @remarks\r\n * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n * @param reducer - The actual case reducer function.\r\n */\r\n addCase>(\r\n type: Type,\r\n reducer: CaseReducer\r\n ): ActionReducerMapBuilder\r\n\r\n /**\r\n * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n * @remarks\r\n * If multiple matcher reducers match, all of them will be executed in the order\r\n * they were defined in - even if a case reducer already matched.\r\n * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates)\r\n * function\r\n * @param reducer - The actual case reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AsyncThunk,\r\n AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk;\r\n\r\ntype PendingAction = ReturnType;\r\ntype RejectedAction = ReturnType;\r\ntype FulfilledAction = ReturnType;\r\n\r\nconst initialState: Record = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n builder\r\n .addCase(resetAction, () => initialState)\r\n // matcher can be defined outside as a type predicate function\r\n .addMatcher(isPendingAction, (state, action) => {\r\n state[action.meta.requestId] = \"pending\";\r\n })\r\n .addMatcher(\r\n // matcher can be defined inline as a type predicate function\r\n (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"rejected\";\r\n }\r\n )\r\n // matcher can just return boolean and the matcher can receive a generic argument\r\n .addMatcher(\r\n (action) => action.type.endsWith(\"/fulfilled\"),\r\n (state, action) => {\r\n state[action.meta.requestId] = \"fulfilled\";\r\n }\r\n );\r\n});\r\n```\r\n */\r\n addMatcher(\r\n matcher: TypeGuard | ((action: any) => boolean),\r\n reducer: CaseReducer\r\n ): Omit, 'addCase'>\r\n\r\n /**\r\n * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n * @param reducer - The fallback \"default case\" reducer function.\r\n *\r\n * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n builder\r\n // .addCase(...)\r\n // .addMatcher(...)\r\n .addDefaultCase((state, action) => {\r\n state.otherActions++\r\n })\r\n})\r\n```\r\n */\r\n addDefaultCase(reducer: CaseReducer): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback(\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): [\r\n CaseReducers,\r\n ActionMatcherDescriptionCollection,\r\n CaseReducer | undefined\r\n] {\r\n const actionsMap: CaseReducers = {}\r\n const actionMatchers: ActionMatcherDescriptionCollection = []\r\n let defaultCaseReducer: CaseReducer | undefined\r\n const builder = {\r\n addCase(\r\n typeOrActionCreator: string | TypedActionCreator,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n /*\r\n to keep the definition by the user in line with actual behavior,\r\n we enforce `addCase` to always be called before calling `addMatcher`\r\n as matching cases take precedence over matchers\r\n */\r\n if (actionMatchers.length > 0) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n )\r\n }\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n const type =\r\n typeof typeOrActionCreator === 'string'\r\n ? typeOrActionCreator\r\n : typeOrActionCreator.type\r\n if (!type) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with an empty action type'\r\n )\r\n }\r\n if (type in actionsMap) {\r\n throw new Error(\r\n '`builder.addCase` cannot be called with two reducers for the same action type'\r\n )\r\n }\r\n actionsMap[type] = reducer\r\n return builder\r\n },\r\n addMatcher(\r\n matcher: TypeGuard,\r\n reducer: CaseReducer\r\n ) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error(\r\n '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n )\r\n }\r\n }\r\n actionMatchers.push({ matcher, reducer })\r\n return builder\r\n },\r\n addDefaultCase(reducer: CaseReducer) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (defaultCaseReducer) {\r\n throw new Error('`builder.addDefaultCase` can only be called once')\r\n }\r\n }\r\n defaultCaseReducer = reducer\r\n return builder\r\n },\r\n }\r\n builderCallback(builder)\r\n return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n","import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n ActionCreatorWithoutPayload,\r\n PayloadAction,\r\n PayloadActionCreator,\r\n PrepareAction,\r\n _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n CaseReducer,\r\n CaseReducers,\r\n ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator

= PayloadActionCreator

\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n State = any,\r\n CaseReducers extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice name.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The slice's reducer.\r\n */\r\n reducer: Reducer\r\n\r\n /**\r\n * Action creators for the types of actions that are handled by the slice\r\n * reducer.\r\n */\r\n actions: CaseReducerActions\r\n\r\n /**\r\n * The individual case reducer functions that were passed in the `reducers` parameter.\r\n * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n */\r\n caseReducers: SliceDefinedCaseReducers\r\n\r\n /**\r\n * Provides access to the initial state value given to the slice.\r\n * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n */\r\n getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n State = any,\r\n CR extends SliceCaseReducers = SliceCaseReducers,\r\n Name extends string = string\r\n> {\r\n /**\r\n * The slice's name. Used to namespace the generated action types.\r\n */\r\n name: Name\r\n\r\n /**\r\n * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n */\r\n initialState: State | (() => State)\r\n\r\n /**\r\n * A mapping from action types to action-type-specific *case reducer*\r\n * functions. For every action type, a matching action creator will be\r\n * generated using `createAction()`.\r\n */\r\n reducers: ValidateSliceCaseReducers\r\n\r\n /**\r\n * A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * \r\n * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n * functions. These reducers should have existing action types used\r\n * as the keys, and action creators will _not_ be generated.\r\n * \r\n * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n name: 'counter',\r\n initialState: 0,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(incrementBy, (state, action) => {\r\n // action is inferred correctly here if using TS\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {})\r\n // You can match a range of action types\r\n .addMatcher(\r\n isRejectedAction,\r\n // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n (state, action) => {}\r\n )\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {})\r\n }\r\n})\r\n```\r\n */\r\n extraReducers?:\r\n | CaseReducers, any>\r\n | ((builder: ActionReducerMapBuilder>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare = {\r\n reducer: CaseReducer\r\n prepare: PrepareAction\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers = {\r\n [K: string]:\r\n | CaseReducer>\r\n | CaseReducerWithPrepare>\r\n}\r\n\r\ntype SliceActionType<\r\n SliceName extends string,\r\n ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n CaseReducers extends SliceCaseReducers,\r\n SliceName extends string\r\n> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n ? ActionCreatorForCaseReducerWithPrepare<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n : ActionCreatorForCaseReducer<\r\n CaseReducers[Type],\r\n SliceActionType\r\n >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n CR extends { prepare: any },\r\n Type extends string\r\n> = _ActionCreatorWithPreparedPayload\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer = CR extends (\r\n state: any,\r\n action: infer Action\r\n) => any\r\n ? Action extends { payload: infer P }\r\n ? PayloadActionCreator\r\n : ActionCreatorWithoutPayload\r\n : ActionCreatorWithoutPayload\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers> = {\r\n [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n reducer: infer Reducer\r\n }\r\n ? Reducer\r\n : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n S,\r\n ACR extends SliceCaseReducers\r\n> = ACR &\r\n {\r\n [T in keyof ACR]: ACR[T] extends {\r\n reducer(s: S, action?: infer A): any\r\n }\r\n ? {\r\n prepare(...a: never[]): Omit\r\n }\r\n : {}\r\n }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n State,\r\n CaseReducers extends SliceCaseReducers,\r\n Name extends string = string\r\n>(\r\n options: CreateSliceOptions\r\n): Slice {\r\n const { name } = options\r\n if (!name) {\r\n throw new Error('`name` is a required option for createSlice')\r\n }\r\n\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'development'\r\n ) {\r\n if (options.initialState === undefined) {\r\n console.error(\r\n 'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n )\r\n }\r\n }\r\n\r\n const initialState =\r\n typeof options.initialState == 'function'\r\n ? options.initialState\r\n : freezeDraftable(options.initialState)\r\n\r\n const reducers = options.reducers || {}\r\n\r\n const reducerNames = Object.keys(reducers)\r\n\r\n const sliceCaseReducersByName: Record = {}\r\n const sliceCaseReducersByType: Record = {}\r\n const actionCreators: Record = {}\r\n\r\n reducerNames.forEach((reducerName) => {\r\n const maybeReducerWithPrepare = reducers[reducerName]\r\n const type = getType(name, reducerName)\r\n\r\n let caseReducer: CaseReducer\r\n let prepareCallback: PrepareAction | undefined\r\n\r\n if ('reducer' in maybeReducerWithPrepare) {\r\n caseReducer = maybeReducerWithPrepare.reducer\r\n prepareCallback = maybeReducerWithPrepare.prepare\r\n } else {\r\n caseReducer = maybeReducerWithPrepare\r\n }\r\n\r\n sliceCaseReducersByName[reducerName] = caseReducer\r\n sliceCaseReducersByType[type] = caseReducer\r\n actionCreators[reducerName] = prepareCallback\r\n ? createAction(type, prepareCallback)\r\n : createAction(type)\r\n })\r\n\r\n function buildReducer() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof options.extraReducers === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n )\r\n }\r\n }\r\n }\r\n const [\r\n extraReducers = {},\r\n actionMatchers = [],\r\n defaultCaseReducer = undefined,\r\n ] =\r\n typeof options.extraReducers === 'function'\r\n ? executeReducerBuilderCallback(options.extraReducers)\r\n : [options.extraReducers]\r\n\r\n const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n return createReducer(initialState, (builder) => {\r\n for (let key in finalCaseReducers) {\r\n builder.addCase(key, finalCaseReducers[key] as CaseReducer)\r\n }\r\n for (let m of actionMatchers) {\r\n builder.addMatcher(m.matcher, m.reducer)\r\n }\r\n if (defaultCaseReducer) {\r\n builder.addDefaultCase(defaultCaseReducer)\r\n }\r\n })\r\n }\r\n\r\n let _reducer: ReducerWithInitialState\r\n\r\n return {\r\n name,\r\n reducer(state, action) {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer(state, action)\r\n },\r\n actions: actionCreators as any,\r\n caseReducers: sliceCaseReducersByName as any,\r\n getInitialState() {\r\n if (!_reducer) _reducer = buildReducer()\r\n\r\n return _reducer.getInitialState()\r\n },\r\n }\r\n}\r\n","import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n * inference purposes and should not have any further value.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions = Record\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher {\r\n (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription = {\r\n matcher: ActionMatcher\r\n reducer: CaseReducer>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection = ReadonlyArray<\r\n ActionMatcherDescription\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection = Array<\r\n ActionMatcherDescription\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer = (\r\n state: Draft,\r\n action: A\r\n) => NoInfer | void | Draft>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n * for internal inference purposes and using it manually\r\n * would lead to type erasure.\r\n * It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers = {\r\n [T in keyof AS]: AS[T] extends Action ? CaseReducer : void\r\n}\r\n\r\nexport type NotFunction = T extends Function ? never : T\r\n\r\nfunction isStateFunction(x: unknown): x is () => S {\r\n return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState> = Reducer & {\r\n getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n createAction,\r\n createReducer,\r\n AnyAction,\r\n PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction(\"increment\");\r\nconst decrement = createAction(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n action: AnyAction\r\n): action is PayloadAction {\r\n return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n {\r\n counter: 0,\r\n sumOfNumberPayloads: 0,\r\n unhandledActions: 0,\r\n },\r\n (builder) => {\r\n builder\r\n .addCase(increment, (state, action) => {\r\n // action is inferred correctly here\r\n state.counter += action.payload;\r\n })\r\n // You can chain calls, or have separate `builder.addCase()` lines each time\r\n .addCase(decrement, (state, action) => {\r\n state.counter -= action.payload;\r\n })\r\n // You can apply a \"matcher function\" to incoming actions\r\n .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n // and provide a default case if no other handlers matched\r\n .addDefaultCase((state, action) => {});\r\n }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n builderCallback: (builder: ActionReducerMapBuilder) => void\r\n): ReducerWithInitialState\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n * All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n * reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n increment: (state, action) => state + action.payload,\r\n decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n [increment]: (state, action) => state + action.payload,\r\n [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n S extends NotFunction,\r\n CR extends CaseReducers = CaseReducers\r\n>(\r\n initialState: S | (() => S),\r\n actionsMap: CR,\r\n actionMatchers?: ActionMatcherDescriptionCollection,\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState\r\n\r\nexport function createReducer>(\r\n initialState: S | (() => S),\r\n mapOrBuilderCallback:\r\n | CaseReducers\r\n | ((builder: ActionReducerMapBuilder) => void),\r\n actionMatchers: ReadonlyActionMatcherDescriptionCollection = [],\r\n defaultCaseReducer?: CaseReducer\r\n): ReducerWithInitialState {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof mapOrBuilderCallback === 'object') {\r\n if (!hasWarnedAboutObjectNotation) {\r\n hasWarnedAboutObjectNotation = true\r\n console.warn(\r\n \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n )\r\n }\r\n }\r\n }\r\n\r\n let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n typeof mapOrBuilderCallback === 'function'\r\n ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n // Ensure the initial state gets frozen either way (if draftable)\r\n let getInitialState: () => S\r\n if (isStateFunction(initialState)) {\r\n getInitialState = () => freezeDraftable(initialState())\r\n } else {\r\n const frozenInitialState = freezeDraftable(initialState)\r\n getInitialState = () => frozenInitialState\r\n }\r\n\r\n function reducer(state = getInitialState(), action: any): S {\r\n let caseReducers = [\r\n actionsMap[action.type],\r\n ...finalActionMatchers\r\n .filter(({ matcher }) => matcher(action))\r\n .map(({ reducer }) => reducer),\r\n ]\r\n if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n caseReducers = [finalDefaultCaseReducer]\r\n }\r\n\r\n return caseReducers.reduce((previousState, caseReducer): S => {\r\n if (caseReducer) {\r\n if (isDraft(previousState)) {\r\n // If it's already a draft, we must already be inside a `createNextState` call,\r\n // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n const draft = previousState as Draft // We can assume this is already a draft\r\n const result = caseReducer(draft, action)\r\n\r\n if (result === undefined) {\r\n return previousState\r\n }\r\n\r\n return result as S\r\n } else if (!isDraftable(previousState)) {\r\n // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n // return the caseReducer func and not wrap it with produce.\r\n const result = caseReducer(previousState as any, action)\r\n\r\n if (result === undefined) {\r\n if (previousState === null) {\r\n return previousState\r\n }\r\n throw Error(\r\n 'A case reducer on a non-draftable value must not return undefined'\r\n )\r\n }\r\n\r\n return result as S\r\n } else {\r\n // @ts-ignore createNextState() produces an Immutable> rather\r\n // than an Immutable, and TypeScript cannot find out how to reconcile\r\n // these two types.\r\n return createNextState(previousState, (draft: Draft) => {\r\n return caseReducer(draft, action)\r\n })\r\n }\r\n }\r\n\r\n return previousState\r\n }, state)\r\n }\r\n\r\n reducer.getInitialState = getInitialState\r\n\r\n return reducer as ReducerWithInitialState\r\n}\r\n","// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n let id = ''\r\n // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n let i = size\r\n while (i--) {\r\n // `| 0` is more compact and faster than `Math.floor()`.\r\n id += urlAlphabet[(Math.random() * 64) | 0]\r\n }\r\n return id\r\n}\r\n","import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n PayloadAction,\r\n ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload\r\n\r\nexport type BaseThunkAPI<\r\n S,\r\n E,\r\n D extends Dispatch = Dispatch,\r\n RejectedValue = unknown,\r\n RejectedMeta = unknown,\r\n FulfilledMeta = unknown\r\n> = {\r\n dispatch: D\r\n getState: () => S\r\n extra: E\r\n requestId: string\r\n signal: AbortSignal\r\n abort: (reason?: string) => void\r\n rejectWithValue: IsUnknown<\r\n RejectedMeta,\r\n (value: RejectedValue) => RejectWithValue,\r\n (\r\n value: RejectedValue,\r\n meta: RejectedMeta\r\n ) => RejectWithValue\r\n >\r\n fulfillWithValue: IsUnknown<\r\n FulfilledMeta,\r\n (value: FulfilledValue) => FulfilledValue,\r\n (\r\n value: FulfilledValue,\r\n meta: FulfilledMeta\r\n ) => FulfillWithMeta\r\n >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n name?: string\r\n message?: string\r\n stack?: string\r\n code?: string\r\n}\r\n\r\nconst commonProperties: Array = [\r\n 'name',\r\n 'message',\r\n 'stack',\r\n 'code',\r\n]\r\n\r\nclass RejectWithValue {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'RejectWithValue'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: RejectedMeta\r\n ) {}\r\n}\r\n\r\nclass FulfillWithMeta {\r\n /*\r\n type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n does not exist at runtime\r\n */\r\n private readonly _type!: 'FulfillWithMeta'\r\n constructor(\r\n public readonly payload: Payload,\r\n public readonly meta: FulfilledMeta\r\n ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n if (typeof value === 'object' && value !== null) {\r\n const simpleError: SerializedError = {}\r\n for (const property of commonProperties) {\r\n if (typeof value[property] === 'string') {\r\n simpleError[property] = value[property]\r\n }\r\n }\r\n\r\n return simpleError\r\n }\r\n\r\n return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n state?: unknown\r\n dispatch?: Dispatch\r\n extra?: unknown\r\n rejectValue?: unknown\r\n serializedErrorType?: unknown\r\n pendingMeta?: unknown\r\n fulfilledMeta?: unknown\r\n rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState = ThunkApiConfig extends {\r\n state: infer State\r\n}\r\n ? State\r\n : unknown\r\ntype GetExtra = ThunkApiConfig extends { extra: infer Extra }\r\n ? Extra\r\n : unknown\r\ntype GetDispatch = ThunkApiConfig extends {\r\n dispatch: infer Dispatch\r\n}\r\n ? FallbackIfUnknown<\r\n Dispatch,\r\n ThunkDispatch<\r\n GetState,\r\n GetExtra,\r\n AnyAction\r\n >\r\n >\r\n : ThunkDispatch, GetExtra, AnyAction>\r\n\r\nexport type GetThunkAPI = BaseThunkAPI<\r\n GetState,\r\n GetExtra,\r\n GetDispatch,\r\n GetRejectValue,\r\n GetRejectedMeta,\r\n GetFulfilledMeta\r\n>\r\n\r\ntype GetRejectValue = ThunkApiConfig extends {\r\n rejectValue: infer RejectValue\r\n}\r\n ? RejectValue\r\n : unknown\r\n\r\ntype GetPendingMeta = ThunkApiConfig extends {\r\n pendingMeta: infer PendingMeta\r\n}\r\n ? PendingMeta\r\n : unknown\r\n\r\ntype GetFulfilledMeta = ThunkApiConfig extends {\r\n fulfilledMeta: infer FulfilledMeta\r\n}\r\n ? FulfilledMeta\r\n : unknown\r\n\r\ntype GetRejectedMeta = ThunkApiConfig extends {\r\n rejectedMeta: infer RejectedMeta\r\n}\r\n ? RejectedMeta\r\n : unknown\r\n\r\ntype GetSerializedErrorType = ThunkApiConfig extends {\r\n serializedErrorType: infer GetSerializedErrorType\r\n}\r\n ? GetSerializedErrorType\r\n : SerializedError\r\n\r\ntype MaybePromise = T | Promise | (T extends any ? Promise : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n Returned,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n | IsUnknown<\r\n GetFulfilledMeta,\r\n Returned,\r\n FulfillWithMeta>\r\n >\r\n | RejectWithValue<\r\n GetRejectValue,\r\n GetRejectedMeta\r\n >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n arg: ThunkArg,\r\n thunkAPI: GetThunkAPI\r\n) => AsyncThunkPayloadCreatorReturnValue\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n dispatch: GetDispatch,\r\n getState: () => GetState,\r\n extra: GetExtra\r\n) => Promise<\r\n | ReturnType>\r\n | ReturnType>\r\n> & {\r\n abort: (reason?: string) => void\r\n requestId: string\r\n arg: ThunkArg\r\n unwrap: () => Promise\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n ThunkArg,\r\n // any handling\r\n (arg: ThunkArg) => AsyncThunkAction,\r\n // unknown handling\r\n unknown extends ThunkArg\r\n ? (arg: ThunkArg) => AsyncThunkAction // argument not specified or specified as void or undefined\r\n : [ThunkArg] extends [void] | [undefined]\r\n ? () => AsyncThunkAction // argument contains void\r\n : [void] extends [ThunkArg] // make optional\r\n ? (arg?: ThunkArg) => AsyncThunkAction // argument contains undefined\r\n : [undefined] extends [ThunkArg]\r\n ? WithStrictNullChecks<\r\n // with strict nullChecks: make optional\r\n (\r\n arg?: ThunkArg\r\n ) => AsyncThunkAction,\r\n // without strict null checks this will match everything, so don't make it optional\r\n (arg: ThunkArg) => AsyncThunkAction\r\n > // default case: normal argument\r\n : (arg: ThunkArg) => AsyncThunkAction\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n ThunkArg = void,\r\n ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n /**\r\n * A method to control whether the asyncThunk should be executed. Has access to the\r\n * `arg`, `api.getState()` and `api.extra` arguments.\r\n *\r\n * @returns `false` if it should be skipped\r\n */\r\n condition?(\r\n arg: ThunkArg,\r\n api: Pick, 'getState' | 'extra'>\r\n ): MaybePromise\r\n /**\r\n * If `condition` returns `false`, the asyncThunk will be skipped.\r\n * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n * will be dispatched or not.\r\n *\r\n * @default `false`\r\n */\r\n dispatchConditionRejection?: boolean\r\n\r\n serializeError?: (x: unknown) => GetSerializedErrorType\r\n\r\n /**\r\n * A function to use when generating the `requestId` for the request sequence.\r\n *\r\n * @default `nanoid`\r\n */\r\n idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n GetPendingMeta,\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n *\r\n * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n */\r\n getPendingMeta?(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n },\r\n {\r\n /**\r\n * A method to generate additional properties to be added to `meta` of the pending action.\r\n */\r\n getPendingMeta(\r\n base: {\r\n arg: ThunkArg\r\n requestId: string\r\n },\r\n api: Pick, 'getState' | 'extra'>\r\n ): GetPendingMeta\r\n }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [string, ThunkArg, GetPendingMeta?],\r\n undefined,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'pending'\r\n } & GetPendingMeta\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [\r\n Error | null,\r\n string,\r\n ThunkArg,\r\n GetRejectValue?,\r\n GetRejectedMeta?\r\n ],\r\n GetRejectValue | undefined,\r\n string,\r\n GetSerializedErrorType,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'rejected'\r\n aborted: boolean\r\n condition: boolean\r\n } & (\r\n | ({ rejectedWithValue: false } & {\r\n [K in keyof GetRejectedMeta]?: undefined\r\n })\r\n | ({ rejectedWithValue: true } & GetRejectedMeta)\r\n )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n [Returned, string, ThunkArg, GetFulfilledMeta?],\r\n Returned,\r\n string,\r\n never,\r\n {\r\n arg: ThunkArg\r\n requestId: string\r\n requestStatus: 'fulfilled'\r\n } & GetFulfilledMeta\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator & {\r\n pending: AsyncThunkPendingActionCreator\r\n rejected: AsyncThunkRejectedActionCreator\r\n fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >\r\n typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs = Id<\r\n NewConfig & Omit\r\n>\r\n\r\ntype CreateAsyncThunk = {\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n // separate signature without `AsyncThunkConfig` for better inference\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n CurriedThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk\r\n\r\n /**\r\n *\r\n * @param typePrefix\r\n * @param payloadCreator\r\n * @param options\r\n *\r\n * @public\r\n */\r\n (\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >,\r\n options?: AsyncThunkOptions<\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n ): AsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n OverrideThunkApiConfigs\r\n >\r\n\r\n withTypes(): CreateAsyncThunk<\r\n OverrideThunkApiConfigs\r\n >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n function createAsyncThunk<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig extends AsyncThunkConfig\r\n >(\r\n typePrefix: string,\r\n payloadCreator: AsyncThunkPayloadCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n options?: AsyncThunkOptions\r\n ): AsyncThunk {\r\n type RejectedValue = GetRejectValue\r\n type PendingMeta = GetPendingMeta\r\n type FulfilledMeta = GetFulfilledMeta\r\n type RejectedMeta = GetRejectedMeta\r\n\r\n const fulfilled: AsyncThunkFulfilledActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n > = createAction(\r\n typePrefix + '/fulfilled',\r\n (\r\n payload: Returned,\r\n requestId: string,\r\n arg: ThunkArg,\r\n meta?: FulfilledMeta\r\n ) => ({\r\n payload,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'fulfilled' as const,\r\n },\r\n })\r\n )\r\n\r\n const pending: AsyncThunkPendingActionCreator =\r\n createAction(\r\n typePrefix + '/pending',\r\n (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n payload: undefined,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n requestStatus: 'pending' as const,\r\n },\r\n })\r\n )\r\n\r\n const rejected: AsyncThunkRejectedActionCreator =\r\n createAction(\r\n typePrefix + '/rejected',\r\n (\r\n error: Error | null,\r\n requestId: string,\r\n arg: ThunkArg,\r\n payload?: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => ({\r\n payload,\r\n error: ((options && options.serializeError) || miniSerializeError)(\r\n error || 'Rejected'\r\n ) as GetSerializedErrorType,\r\n meta: {\r\n ...((meta as any) || {}),\r\n arg,\r\n requestId,\r\n rejectedWithValue: !!payload,\r\n requestStatus: 'rejected' as const,\r\n aborted: error?.name === 'AbortError',\r\n condition: error?.name === 'ConditionError',\r\n },\r\n })\r\n )\r\n\r\n let displayedWarning = false\r\n\r\n const AC =\r\n typeof AbortController !== 'undefined'\r\n ? AbortController\r\n : class implements AbortController {\r\n signal = {\r\n aborted: false,\r\n addEventListener() {},\r\n dispatchEvent() {\r\n return false\r\n },\r\n onabort() {},\r\n removeEventListener() {},\r\n reason: undefined,\r\n throwIfAborted() {},\r\n }\r\n abort() {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!displayedWarning) {\r\n displayedWarning = true\r\n console.info(\r\n `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n function actionCreator(\r\n arg: ThunkArg\r\n ): AsyncThunkAction {\r\n return (dispatch, getState, extra) => {\r\n const requestId = options?.idGenerator\r\n ? options.idGenerator(arg)\r\n : nanoid()\r\n\r\n const abortController = new AC()\r\n let abortReason: string | undefined\r\n\r\n let started = false\r\n function abort(reason?: string) {\r\n abortReason = reason\r\n abortController.abort()\r\n }\r\n\r\n const promise = (async function () {\r\n let finalAction: ReturnType\r\n try {\r\n let conditionResult = options?.condition?.(arg, { getState, extra })\r\n if (isThenable(conditionResult)) {\r\n conditionResult = await conditionResult\r\n }\r\n\r\n if (conditionResult === false || abortController.signal.aborted) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw {\r\n name: 'ConditionError',\r\n message: 'Aborted due to condition callback returning false.',\r\n }\r\n }\r\n started = true\r\n\r\n const abortedPromise = new Promise((_, reject) =>\r\n abortController.signal.addEventListener('abort', () =>\r\n reject({\r\n name: 'AbortError',\r\n message: abortReason || 'Aborted',\r\n })\r\n )\r\n )\r\n dispatch(\r\n pending(\r\n requestId,\r\n arg,\r\n options?.getPendingMeta?.(\r\n { requestId, arg },\r\n { getState, extra }\r\n )\r\n )\r\n )\r\n finalAction = await Promise.race([\r\n abortedPromise,\r\n Promise.resolve(\r\n payloadCreator(arg, {\r\n dispatch,\r\n getState,\r\n extra,\r\n requestId,\r\n signal: abortController.signal,\r\n abort,\r\n rejectWithValue: ((\r\n value: RejectedValue,\r\n meta?: RejectedMeta\r\n ) => {\r\n return new RejectWithValue(value, meta)\r\n }) as any,\r\n fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n return new FulfillWithMeta(value, meta)\r\n }) as any,\r\n })\r\n ).then((result) => {\r\n if (result instanceof RejectWithValue) {\r\n throw result\r\n }\r\n if (result instanceof FulfillWithMeta) {\r\n return fulfilled(result.payload, requestId, arg, result.meta)\r\n }\r\n return fulfilled(result as any, requestId, arg)\r\n }),\r\n ])\r\n } catch (err) {\r\n finalAction =\r\n err instanceof RejectWithValue\r\n ? rejected(null, requestId, arg, err.payload, err.meta)\r\n : rejected(err as any, requestId, arg)\r\n }\r\n // We dispatch the result action _after_ the catch, to avoid having any errors\r\n // here get swallowed by the try/catch block,\r\n // per https://twitter.com/dan_abramov/status/770914221638942720\r\n // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n const skipDispatch =\r\n options &&\r\n !options.dispatchConditionRejection &&\r\n rejected.match(finalAction) &&\r\n (finalAction as any).meta.condition\r\n\r\n if (!skipDispatch) {\r\n dispatch(finalAction)\r\n }\r\n return finalAction\r\n })()\r\n return Object.assign(promise as Promise, {\r\n abort,\r\n requestId,\r\n arg,\r\n unwrap() {\r\n return promise.then(unwrapResult)\r\n },\r\n })\r\n }\r\n }\r\n\r\n return Object.assign(\r\n actionCreator as AsyncThunkActionCreator<\r\n Returned,\r\n ThunkArg,\r\n ThunkApiConfig\r\n >,\r\n {\r\n pending,\r\n rejected,\r\n fulfilled,\r\n typePrefix,\r\n }\r\n )\r\n }\r\n createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n return createAsyncThunk as CreateAsyncThunk\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n payload: any\r\n meta?: any\r\n error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload = Exclude<\r\n T,\r\n { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult(\r\n action: R\r\n): UnwrappedActionPayload {\r\n if (action.meta && action.meta.rejectedWithValue) {\r\n throw action.payload\r\n }\r\n if (action.error) {\r\n throw action.error\r\n }\r\n return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks = undefined extends boolean\r\n ? False\r\n : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike {\r\n return (\r\n value !== null &&\r\n typeof value === 'object' &&\r\n typeof value.then === 'function'\r\n )\r\n}\r\n","import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction, isAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n ListenerMiddleware,\r\n ListenerMiddlewareInstance,\r\n AddListenerOverloads,\r\n AnyListenerPredicate,\r\n CreateListenerMiddlewareOptions,\r\n TypedAddListener,\r\n TypedCreateListenerEntry,\r\n FallbackAddListenerOptions,\r\n ListenerEntry,\r\n ListenerErrorHandler,\r\n UnsubscribeListener,\r\n TakePattern,\r\n ListenerErrorInfo,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n TypedRemoveListener,\r\n TaskResult,\r\n AbortSignalWithReason,\r\n UnsubscribeListenerOptions,\r\n ForkOptions,\r\n} from './types'\r\nimport {\r\n abortControllerWithReason,\r\n addAbortSignalListener,\r\n assertFunction,\r\n catchRejection,\r\n} from './utils'\r\nimport {\r\n listenerCancelled,\r\n listenerCompleted,\r\n TaskAbortError,\r\n taskCancelled,\r\n taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n runTask,\r\n validateActive,\r\n createPause,\r\n createDelay,\r\n raceWithSignal,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (\r\n parentAbortSignal: AbortSignalWithReason,\r\n parentBlockingPromises: Promise[]\r\n) => {\r\n const linkControllers = (controller: AbortController) =>\r\n addAbortSignalListener(parentAbortSignal, () =>\r\n abortControllerWithReason(controller, parentAbortSignal.reason)\r\n )\r\n\r\n return (\r\n taskExecutor: ForkedTaskExecutor,\r\n opts?: ForkOptions\r\n ): ForkedTask => {\r\n assertFunction(taskExecutor, 'taskExecutor')\r\n const childAbortController = new AbortController()\r\n\r\n linkControllers(childAbortController)\r\n\r\n const result = runTask(\r\n async (): Promise => {\r\n validateActive(parentAbortSignal)\r\n validateActive(childAbortController.signal)\r\n const result = (await taskExecutor({\r\n pause: createPause(childAbortController.signal),\r\n delay: createDelay(childAbortController.signal),\r\n signal: childAbortController.signal,\r\n })) as T\r\n validateActive(childAbortController.signal)\r\n return result\r\n },\r\n () => abortControllerWithReason(childAbortController, taskCompleted)\r\n )\r\n\r\n if (opts?.autoJoin) {\r\n parentBlockingPromises.push(result)\r\n }\r\n\r\n return {\r\n result: createPause>(parentAbortSignal)(result),\r\n cancel() {\r\n abortControllerWithReason(childAbortController, taskCancelled)\r\n },\r\n }\r\n }\r\n}\r\n\r\nconst createTakePattern = (\r\n startListening: AddListenerOverloads<\r\n UnsubscribeListener,\r\n S,\r\n Dispatch\r\n >,\r\n signal: AbortSignal\r\n): TakePattern => {\r\n /**\r\n * A function that takes a ListenerPredicate and an optional timeout,\r\n * and resolves when either the predicate returns `true` based on an action\r\n * state combination or when the timeout expires.\r\n * If the parent listener is canceled while waiting, this will throw a\r\n * TaskAbortError.\r\n */\r\n const take = async

>(\r\n predicate: P,\r\n timeout: number | undefined\r\n ) => {\r\n validateActive(signal)\r\n\r\n // Placeholder unsubscribe function until the listener is added\r\n let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n const tuplePromise = new Promise<[AnyAction, S, S]>((resolve, reject) => {\r\n // Inside the Promise, we synchronously add the listener.\r\n let stopListening = startListening({\r\n predicate: predicate as any,\r\n effect: (action, listenerApi): void => {\r\n // One-shot listener that cleans up as soon as the predicate passes\r\n listenerApi.unsubscribe()\r\n // Resolve the promise with the same arguments the predicate saw\r\n resolve([\r\n action,\r\n listenerApi.getState(),\r\n listenerApi.getOriginalState(),\r\n ])\r\n },\r\n })\r\n unsubscribe = () => {\r\n stopListening()\r\n reject()\r\n }\r\n })\r\n\r\n const promises: (Promise | Promise<[AnyAction, S, S]>)[] = [\r\n tuplePromise,\r\n ]\r\n\r\n if (timeout != null) {\r\n promises.push(\r\n new Promise((resolve) => setTimeout(resolve, timeout, null))\r\n )\r\n }\r\n\r\n try {\r\n const output = await raceWithSignal(signal, Promise.race(promises))\r\n\r\n validateActive(signal)\r\n return output\r\n } finally {\r\n // Always clean up the listener\r\n unsubscribe()\r\n }\r\n }\r\n\r\n return ((predicate: AnyListenerPredicate, timeout: number | undefined) =>\r\n catchRejection(take(predicate, timeout))) as TakePattern\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n if (type) {\r\n predicate = createAction(type).match\r\n } else if (actionCreator) {\r\n type = actionCreator!.type\r\n predicate = actionCreator.match\r\n } else if (matcher) {\r\n predicate = matcher\r\n } else if (predicate) {\r\n // pass\r\n } else {\r\n throw new Error(\r\n 'Creating or removing a listener requires one of the known fields for matching an action'\r\n )\r\n }\r\n\r\n assertFunction(effect, 'options.listener')\r\n\r\n return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry = (\r\n options: FallbackAddListenerOptions\r\n) => {\r\n const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n const id = nanoid()\r\n const entry: ListenerEntry = {\r\n id,\r\n effect,\r\n type,\r\n predicate,\r\n pending: new Set(),\r\n unsubscribe: () => {\r\n throw new Error('Unsubscribe not initialized')\r\n },\r\n }\r\n\r\n return entry\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n entry: ListenerEntry>\r\n) => {\r\n entry.pending.forEach((controller) => {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n })\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n listenerMap: Map\r\n) => {\r\n return () => {\r\n listenerMap.forEach(cancelActiveListeners)\r\n\r\n listenerMap.clear()\r\n }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n errorHandler: ListenerErrorHandler,\r\n errorToNotify: unknown,\r\n errorInfo: ListenerErrorInfo\r\n): void => {\r\n try {\r\n errorHandler(errorToNotify, errorInfo)\r\n } catch (errorHandlerError) {\r\n // We cannot let an error raised here block the listener queue.\r\n // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n setTimeout(() => {\r\n throw errorHandlerError\r\n }, 0)\r\n }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n `${alm}/add`\r\n) as TypedAddListener\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n `${alm}/remove`\r\n) as TypedRemoveListener\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n console.error(`${alm}/error`, ...args)\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n S = unknown,\r\n D extends Dispatch = ThunkDispatch,\r\n ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions = {}) {\r\n const listenerMap = new Map()\r\n const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n assertFunction(onError, 'onError')\r\n\r\n const insertEntry = (entry: ListenerEntry) => {\r\n entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n listenerMap.set(entry.id, entry)\r\n return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n entry.unsubscribe()\r\n if (cancelOptions?.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n }\r\n\r\n const findListenerEntry = (\r\n comparator: (entry: ListenerEntry) => boolean\r\n ): ListenerEntry | undefined => {\r\n for (const entry of Array.from(listenerMap.values())) {\r\n if (comparator(entry)) {\r\n return entry\r\n }\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n const startListening = (options: FallbackAddListenerOptions) => {\r\n let entry = findListenerEntry(\r\n (existingEntry) => existingEntry.effect === options.effect\r\n )\r\n\r\n if (!entry) {\r\n entry = createListenerEntry(options as any)\r\n }\r\n\r\n return insertEntry(entry)\r\n }\r\n\r\n const stopListening = (\r\n options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n ): boolean => {\r\n const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n const entry = findListenerEntry((entry) => {\r\n const matchPredicateOrType =\r\n typeof type === 'string'\r\n ? entry.type === type\r\n : entry.predicate === predicate\r\n\r\n return matchPredicateOrType && entry.effect === effect\r\n })\r\n\r\n if (entry) {\r\n entry.unsubscribe()\r\n if (options.cancelActive) {\r\n cancelActiveListeners(entry)\r\n }\r\n }\r\n\r\n return !!entry\r\n }\r\n\r\n const notifyListener = async (\r\n entry: ListenerEntry>,\r\n action: AnyAction,\r\n api: MiddlewareAPI,\r\n getOriginalState: () => S\r\n ) => {\r\n const internalTaskController = new AbortController()\r\n const take = createTakePattern(\r\n startListening,\r\n internalTaskController.signal\r\n )\r\n const autoJoinPromises: Promise[] = []\r\n\r\n try {\r\n entry.pending.add(internalTaskController)\r\n await Promise.resolve(\r\n entry.effect(\r\n action,\r\n // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n assign({}, api, {\r\n getOriginalState,\r\n condition: (\r\n predicate: AnyListenerPredicate,\r\n timeout?: number\r\n ) => take(predicate, timeout).then(Boolean),\r\n take,\r\n delay: createDelay(internalTaskController.signal),\r\n pause: createPause(internalTaskController.signal),\r\n extra,\r\n signal: internalTaskController.signal,\r\n fork: createFork(internalTaskController.signal, autoJoinPromises),\r\n unsubscribe: entry.unsubscribe,\r\n subscribe: () => {\r\n listenerMap.set(entry.id, entry)\r\n },\r\n cancelActiveListeners: () => {\r\n entry.pending.forEach((controller, _, set) => {\r\n if (controller !== internalTaskController) {\r\n abortControllerWithReason(controller, listenerCancelled)\r\n set.delete(controller)\r\n }\r\n })\r\n },\r\n })\r\n )\r\n )\r\n } catch (listenerError) {\r\n if (!(listenerError instanceof TaskAbortError)) {\r\n safelyNotifyError(onError, listenerError, {\r\n raisedBy: 'effect',\r\n })\r\n }\r\n } finally {\r\n await Promise.allSettled(autoJoinPromises)\r\n\r\n abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n entry.pending.delete(internalTaskController)\r\n }\r\n }\r\n\r\n const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n const middleware: ListenerMiddleware =\r\n (api) => (next) => (action) => {\r\n if (!isAction(action)) {\r\n // we only want to notify listeners for action objects\r\n return next(action)\r\n }\r\n\r\n if (addListener.match(action)) {\r\n return startListening(action.payload)\r\n }\r\n\r\n if (clearAllListeners.match(action)) {\r\n clearListenerMiddleware()\r\n return\r\n }\r\n\r\n if (removeListener.match(action)) {\r\n return stopListening(action.payload)\r\n }\r\n\r\n // Need to get this state _before_ the reducer processes the action\r\n let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n // `getOriginalState` can only be called synchronously.\r\n // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n const getOriginalState = (): S => {\r\n if (originalState === INTERNAL_NIL_TOKEN) {\r\n throw new Error(\r\n `${alm}: getOriginalState can only be called synchronously`\r\n )\r\n }\r\n\r\n return originalState as S\r\n }\r\n\r\n let result: unknown\r\n\r\n try {\r\n // Actually forward the action to the reducer before we handle listeners\r\n result = next(action)\r\n\r\n if (listenerMap.size > 0) {\r\n let currentState = api.getState()\r\n // Work around ESBuild+TS transpilation issue\r\n const listenerEntries = Array.from(listenerMap.values())\r\n for (let entry of listenerEntries) {\r\n let runListener = false\r\n\r\n try {\r\n runListener = entry.predicate(action, currentState, originalState)\r\n } catch (predicateError) {\r\n runListener = false\r\n\r\n safelyNotifyError(onError, predicateError, {\r\n raisedBy: 'predicate',\r\n })\r\n }\r\n\r\n if (!runListener) {\r\n continue\r\n }\r\n\r\n notifyListener(entry, action, api, getOriginalState)\r\n }\r\n }\r\n } finally {\r\n // Remove `originalState` store from this scope.\r\n originalState = INTERNAL_NIL_TOKEN\r\n }\r\n\r\n return result\r\n }\r\n\r\n return {\r\n middleware,\r\n startListening,\r\n stopListening,\r\n clearListeners: clearListenerMiddleware,\r\n } as ListenerMiddlewareInstance\r\n}\r\n","import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection, noop } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n if (signal.aborted) {\r\n throw new TaskAbortError((signal as AbortSignalWithReason).reason)\r\n }\r\n}\r\n\r\n/**\r\n * Generates a race between the promise(s) and the AbortSignal\r\n * This avoids `Promise.race()`-related memory leaks:\r\n * https://github.com/nodejs/node/issues/17469#issuecomment-349794909\r\n */\r\nexport function raceWithSignal(\r\n signal: AbortSignalWithReason,\r\n promise: Promise\r\n): Promise {\r\n let cleanup = noop\r\n return new Promise((resolve, reject) => {\r\n const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n if (signal.aborted) {\r\n notifyRejection()\r\n return\r\n }\r\n\r\n cleanup = addAbortSignalListener(signal, notifyRejection)\r\n promise.finally(() => cleanup()).then(resolve, reject)\r\n }).finally(() => {\r\n // after this point, replace `cleanup` with a noop, so there is no reference to `signal` any more\r\n cleanup = noop\r\n })\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async (\r\n task: () => Promise,\r\n cleanUp?: () => void\r\n): Promise> => {\r\n try {\r\n await Promise.resolve()\r\n const value = await task()\r\n return {\r\n status: 'ok',\r\n value,\r\n }\r\n } catch (error: any) {\r\n return {\r\n status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n error,\r\n }\r\n } finally {\r\n cleanUp?.()\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = (signal: AbortSignal) => {\r\n return (promise: Promise): Promise => {\r\n return catchRejection(\r\n raceWithSignal(signal, promise).then((output) => {\r\n validateActive(signal)\r\n return output\r\n })\r\n )\r\n }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n const pause = createPause(signal)\r\n return (timeoutMs: number): Promise => {\r\n return pause(new Promise((resolve) => setTimeout(resolve, timeoutMs)))\r\n }\r\n}\r\n","import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n () =>\r\n (payload: T): { payload: T; meta: unknown } => ({\r\n payload,\r\n meta: { [SHOULD_AUTOBATCH]: true },\r\n })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise\r\nconst queueMicrotaskShim =\r\n typeof queueMicrotask === 'function'\r\n ? queueMicrotask.bind(\r\n typeof window !== 'undefined'\r\n ? window\r\n : typeof global !== 'undefined'\r\n ? global\r\n : globalThis\r\n )\r\n : // reuse resolved promise, and allocate it lazily\r\n (cb: () => void) =>\r\n (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n setTimeout(() => {\r\n throw err\r\n }, 0)\r\n )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n return (notify: () => void) => {\r\n setTimeout(notify, timeout)\r\n }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n typeof window !== 'undefined' && window.requestAnimationFrame\r\n ? window.requestAnimationFrame\r\n : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n | { type: 'tick' }\r\n | { type: 'timer'; timeout: number }\r\n | { type: 'raf' }\r\n | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n (next) =>\r\n (...args) => {\r\n const store = next(...args)\r\n\r\n let notifying = true\r\n let shouldNotifyAtEndOfTick = false\r\n let notificationQueued = false\r\n\r\n const listeners = new Set<() => void>()\r\n\r\n const queueCallback =\r\n options.type === 'tick'\r\n ? queueMicrotaskShim\r\n : options.type === 'raf'\r\n ? rAF\r\n : options.type === 'callback'\r\n ? options.queueNotification\r\n : createQueueWithTimer(options.timeout)\r\n\r\n const notifyListeners = () => {\r\n // We're running at the end of the event loop tick.\r\n // Run the real listener callbacks to actually update the UI.\r\n notificationQueued = false\r\n if (shouldNotifyAtEndOfTick) {\r\n shouldNotifyAtEndOfTick = false\r\n listeners.forEach((l) => l())\r\n }\r\n }\r\n\r\n return Object.assign({}, store, {\r\n // Override the base `store.subscribe` method to keep original listeners\r\n // from running if we're delaying notifications\r\n subscribe(listener: () => void) {\r\n // Each wrapped listener will only call the real listener if\r\n // the `notifying` flag is currently active when it's called.\r\n // This lets the base store work as normal, while the actual UI\r\n // update becomes controlled by this enhancer.\r\n const wrappedListener: typeof listener = () => notifying && listener()\r\n const unsubscribe = store.subscribe(wrappedListener)\r\n listeners.add(listener)\r\n return () => {\r\n unsubscribe()\r\n listeners.delete(listener)\r\n }\r\n },\r\n // Override the base `store.dispatch` method so that we can check actions\r\n // for the `shouldAutoBatch` flag and determine if batching is active\r\n dispatch(action: any) {\r\n try {\r\n // If the action does _not_ have the `shouldAutoBatch` flag,\r\n // we resume/continue normal notify-after-each-dispatch behavior\r\n notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n // Instead, we set a flag so that it's a no-op when it does run\r\n shouldNotifyAtEndOfTick = !notifying\r\n if (shouldNotifyAtEndOfTick) {\r\n // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n // a microtask to notify listeners at the end of the event loop tick.\r\n // Make sure we only enqueue this _once_ per tick.\r\n if (!notificationQueued) {\r\n notificationQueued = true\r\n queueCallback(notifyListeners)\r\n }\r\n }\r\n // Go ahead and process the action as usual, including reducers.\r\n // If normal notification behavior is enabled, the store will notify\r\n // all of its own listeners, and the wrapper callbacks above will\r\n // see `notifying` is true and pass on to the real listener callbacks.\r\n // If we're \"batching\" behavior, then the wrapped callbacks will\r\n // bail out, causing the base store notification behavior to be no-ops.\r\n return store.dispatch(action)\r\n } finally {\r\n // Assume we're back to normal behavior after each action\r\n notifying = true\r\n }\r\n },\r\n })\r\n }\r\n","import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n default as createNextState,\r\n current,\r\n freeze,\r\n original,\r\n isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n Selector,\r\n OutputParametricSelector,\r\n OutputSelector,\r\n ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments. In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n // js\r\n configureStore,\r\n} from './configureStore'\r\nexport type {\r\n // types\r\n ConfigureEnhancersCallback,\r\n ConfigureStoreOptions,\r\n EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n // js\r\n createAction,\r\n getType,\r\n isAction,\r\n isActionCreator,\r\n isFSA as isFluxStandardAction,\r\n} from './createAction'\r\nexport type {\r\n // types\r\n PayloadAction,\r\n PayloadActionCreator,\r\n ActionCreatorWithNonInferrablePayload,\r\n ActionCreatorWithOptionalPayload,\r\n ActionCreatorWithPayload,\r\n ActionCreatorWithoutPayload,\r\n ActionCreatorWithPreparedPayload,\r\n PrepareAction,\r\n} from './createAction'\r\nexport {\r\n // js\r\n createReducer,\r\n} from './createReducer'\r\nexport type {\r\n // types\r\n Actions,\r\n CaseReducer,\r\n CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n // js\r\n createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n // types\r\n CreateSliceOptions,\r\n Slice,\r\n CaseReducerActions,\r\n SliceCaseReducers,\r\n ValidateSliceCaseReducers,\r\n CaseReducerWithPrepare,\r\n SliceActionCreator,\r\n} from './createSlice'\r\nexport type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware'\r\nexport { createActionCreatorInvariantMiddleware } from './actionCreatorInvariantMiddleware'\r\nexport {\r\n // js\r\n createImmutableStateInvariantMiddleware,\r\n isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n createSerializableStateInvariantMiddleware,\r\n findNonSerializableValue,\r\n isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n // types\r\n SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n // js\r\n getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n // types\r\n ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray, EnhancerArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n Dictionary,\r\n EntityState,\r\n EntityAdapter,\r\n EntitySelectors,\r\n EntityStateAdapter,\r\n EntityId,\r\n Update,\r\n IdSelector,\r\n Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n createAsyncThunk,\r\n unwrapResult,\r\n miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n AsyncThunk,\r\n AsyncThunkOptions,\r\n AsyncThunkAction,\r\n AsyncThunkPayloadCreatorReturnValue,\r\n AsyncThunkPayloadCreator,\r\n SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n // js\r\n isAllOf,\r\n isAnyOf,\r\n isPending,\r\n isRejected,\r\n isFulfilled,\r\n isAsyncThunkAction,\r\n isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n // types\r\n ActionMatchingAllOf,\r\n ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n ListenerEffect,\r\n ListenerMiddleware,\r\n ListenerEffectAPI,\r\n ListenerMiddlewareInstance,\r\n CreateListenerMiddlewareOptions,\r\n ListenerErrorHandler,\r\n TypedStartListening,\r\n TypedAddListener,\r\n TypedStopListening,\r\n TypedRemoveListener,\r\n UnsubscribeListener,\r\n UnsubscribeListenerOptions,\r\n ForkedTaskExecutor,\r\n ForkedTask,\r\n ForkedTaskAPI,\r\n AsyncTaskExecutor,\r\n SyncTaskExecutor,\r\n TaskCancelled,\r\n TaskRejected,\r\n TaskResolved,\r\n TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n createListenerMiddleware,\r\n addListener,\r\n removeListener,\r\n clearAllListeners,\r\n TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n SHOULD_AUTOBATCH,\r\n prepareAutoBatched,\r\n autoBatchEnhancer,\r\n} from './autoBatchEnhancer'\r\nexport type { AutoBatchOptions } from './autoBatchEnhancer'\r\n\r\nexport type { ExtractDispatchExtensions as TSHelpersExtractDispatchExtensions } from './tsHelpers'\r\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar constants = require('./constants');\nvar E = constants.typeErrors, trackPriority = constants.trackPriority;\nvar util = require('../webrtc/util');\nvar sessionSID = require('./sid').sessionSID;\nvar TwilioWarning = require('./twiliowarning');\n/**\n * Return the given {@link LocalTrack} or a new {@link LocalTrack} for the\n * given MediaStreamTrack.\n * @param {LocalTrack|MediaStreamTrack} track\n * @param {object} options\n * @returns {LocalTrack}\n * @throws {TypeError}\n */\nfunction asLocalTrack(track, options) {\n if (track instanceof options.LocalAudioTrack\n || track instanceof options.LocalVideoTrack\n || track instanceof options.LocalDataTrack) {\n return track;\n }\n if (track instanceof options.MediaStreamTrack) {\n return track.kind === 'audio'\n ? new options.LocalAudioTrack(track, options)\n : new options.LocalVideoTrack(track, options);\n }\n /* eslint new-cap:0 */\n throw E.INVALID_TYPE('track', 'LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n}\n/**\n * Create a new {@link LocalTrackPublication} for the given {@link LocalTrack}.\n * @param {LocalTrack} track\n * @param {LocalTrackPublicationSignaling} signaling\n * @param {function(track: LocalTrackPublication): void} unpublish\n * @param {object} options\n */\nfunction asLocalTrackPublication(track, signaling, unpublish, options) {\n var LocalTrackPublication = {\n audio: options.LocalAudioTrackPublication,\n video: options.LocalVideoTrackPublication,\n data: options.LocalDataTrackPublication\n }[track.kind];\n return new LocalTrackPublication(signaling, track, unpublish, options);\n}\n/**\n * Capitalize a word.\n * @param {string} word\n * @returns {string} capitalized\n */\nfunction capitalize(word) {\n return word[0].toUpperCase() + word.slice(1);\n}\n/**\n * Log deprecation warnings for the given events of an EventEmitter.\n * @param {string} name\n * @param {EventEmitter} emitter\n * @param {Map} events\n * @param {Log} log\n */\nfunction deprecateEvents(name, emitter, events, log) {\n var warningsShown = new Set();\n emitter.on('newListener', function newListener(event) {\n if (events.has(event) && !warningsShown.has(event)) {\n log.deprecated(name + \"#\" + event + \" has been deprecated and scheduled for removal in twilio-video.js@2.0.0.\" + (events.get(event)\n ? \" Use \" + name + \"#\" + events.get(event) + \" instead.\"\n : ''));\n warningsShown.add(event);\n }\n if (warningsShown.size >= events.size) {\n emitter.removeListener('newListener', newListener);\n }\n });\n}\n/**\n * Finds the items in list1 that are not in list2.\n * @param {Array<*>|Map<*>|Set<*>} list1\n * @param {Array<*>|Map<*>|Set<*>} list2\n * @returns {Set}\n */\nfunction difference(list1, list2) {\n list1 = Array.isArray(list1) ? new Set(list1) : new Set(list1.values());\n list2 = Array.isArray(list2) ? new Set(list2) : new Set(list2.values());\n var difference = new Set();\n list1.forEach(function (item) {\n if (!list2.has(item)) {\n difference.add(item);\n }\n });\n return difference;\n}\n/**\n * Filter out the keys in an object with a given value.\n * @param {object} object - Object to be filtered\n * @param {*} [filterValue] - Value to be filtered out; If not specified, then\n * filters out all keys which have an explicit value of \"undefined\"\n * @returns {object} - Filtered object\n */\nfunction filterObject(object, filterValue) {\n return Object.keys(object).reduce(function (filtered, key) {\n if (object[key] !== filterValue) {\n filtered[key] = object[key];\n }\n return filtered;\n }, {});\n}\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} [mapFn]\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n var listArray = list instanceof Map || list instanceof Set\n ? Array.from(list.values())\n : list;\n mapFn = mapFn || function mapFn(item) {\n return item;\n };\n return listArray.reduce(function (flattened, item) {\n var mapped = mapFn(item);\n return flattened.concat(mapped);\n }, []);\n}\n/**\n * Get the user agent string, or return \"Unknown\".\n * @returns {string}\n */\nfunction getUserAgent() {\n return typeof navigator !== 'undefined' && navigator.userAgent\n ? navigator.userAgent\n : 'Unknown';\n}\n/**\n * Get the platform component of the user agent string.\n * Example:\n * Input - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36\n * Output - macintosh\n * @returns {string}\n */\nfunction getPlatform() {\n var userAgent = getUserAgent();\n var _a = __read(userAgent.match(/\\(([^)]+)\\)/) || [], 2), _b = _a[1], match = _b === void 0 ? 'unknown' : _b;\n var _c = __read(match.split(';').map(function (entry) { return entry.trim(); }), 1), platform = _c[0];\n return platform.toLowerCase();\n}\n/**\n * Create a unique identifier.\n * @returns {string}\n */\nfunction makeUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n/**\n * Ensure that the given function is called once per tick.\n * @param {function} fn - Function to be executed\n * @returns {function} - Schedules the given function to be called on the next tick\n */\nfunction oncePerTick(fn) {\n var timeout = null;\n function nextTick() {\n timeout = null;\n fn();\n }\n return function scheduleNextTick() {\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(nextTick);\n };\n}\nfunction promiseFromEvents(operation, eventEmitter, successEvent, failureEvent) {\n return new Promise(function (resolve, reject) {\n function onSuccess() {\n var args = [].slice.call(arguments);\n if (failureEvent) {\n eventEmitter.removeListener(failureEvent, onFailure);\n }\n resolve.apply(void 0, __spreadArray([], __read(args)));\n }\n function onFailure() {\n var args = [].slice.call(arguments);\n eventEmitter.removeListener(successEvent, onSuccess);\n reject.apply(void 0, __spreadArray([], __read(args)));\n }\n eventEmitter.once(successEvent, onSuccess);\n if (failureEvent) {\n eventEmitter.once(failureEvent, onFailure);\n }\n operation();\n });\n}\n/**\n * Traverse down multiple nodes on an object and return null if\n * any link in the path is unavailable.\n * @param {Object} obj - Object to traverse\n * @param {String} path - Path to traverse. Period-separated.\n * @returns {Any|null}\n */\nfunction getOrNull(obj, path) {\n return path.split('.').reduce(function (output, step) {\n if (!output) {\n return null;\n }\n return output[step];\n }, obj);\n}\n/**\n * @typedef {object} Deferred\n * @property {Promise} promise\n * @property {function} reject\n * @property {function} resolve\n */\n/**\n * Create a {@link Deferred}.\n * @returns {Deferred}\n */\nfunction defer() {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\n/**\n * Copy a method from a `source` prototype onto a `wrapper` prototype. Invoking\n * the method on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} methodName\n * @returns {undefined}\n */\nfunction delegateMethod(source, wrapper, target, methodName) {\n if (methodName in wrapper) {\n // Skip any methods already set.\n return;\n }\n else if (methodName.match(/^on[a-z]+$/)) {\n // Skip EventHandlers (these are handled in the constructor).\n return;\n }\n var type;\n try {\n type = typeof source[methodName];\n }\n catch (error) {\n // NOTE(mroberts): Attempting to check the type of non-function members\n // on the prototype throws an error for some types.\n }\n if (type !== 'function') {\n // Skip non-function members.\n return;\n }\n /* eslint no-loop-func:0 */\n wrapper[methodName] = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return (_a = this[target])[methodName].apply(_a, __spreadArray([], __read(args)));\n };\n}\n/**\n * Copy methods from a `source` prototype onto a `wrapper` prototype. Invoking\n * the methods on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction delegateMethods(source, wrapper, target) {\n for (var methodName in source) {\n delegateMethod(source, wrapper, target, methodName);\n }\n}\n/**\n * Determine whether two values are deeply equal.\n * @param {*} val1\n * @param {*} val2\n * @returns {boolean}\n */\nfunction isDeepEqual(val1, val2) {\n if (val1 === val2) {\n return true;\n }\n if (typeof val1 !== typeof val2) {\n return false;\n }\n if (val1 === null) {\n return val2 === null;\n }\n if (val2 === null) {\n return false;\n }\n if (Array.isArray(val1)) {\n return Array.isArray(val2)\n && val1.length === val2.length\n && val1.every(function (val, i) { return isDeepEqual(val, val2[i]); });\n }\n if (typeof val1 === 'object') {\n var val1Keys = Object.keys(val1).sort();\n var val2Keys = Object.keys(val2).sort();\n return !Array.isArray(val2)\n && isDeepEqual(val1Keys, val2Keys)\n && val1Keys.every(function (key) { return isDeepEqual(val1[key], val2[key]); });\n }\n return false;\n}\n/**\n * Whether the given argument is a non-array object.\n * @param {*} object\n * @return {boolean}\n */\nfunction isNonArrayObject(object) {\n return typeof object === 'object' && !Array.isArray(object);\n}\n/**\n * For each property name on the `source` prototype, add getters and/or setters\n * to `wrapper` that proxy to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction proxyProperties(source, wrapper, target) {\n Object.getOwnPropertyNames(source).forEach(function (propertyName) {\n proxyProperty(source, wrapper, target, propertyName);\n });\n}\n/**\n * For the property name on the `source` prototype, add a getter and/or setter\n * to `wrapper` that proxies to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} propertyName\n * @returns {undefined}\n */\nfunction proxyProperty(source, wrapper, target, propertyName) {\n if (propertyName in wrapper) {\n // Skip any properties already set.\n return;\n }\n else if (propertyName.match(/^on[a-z]+$/)) {\n Object.defineProperty(wrapper, propertyName, {\n value: null,\n writable: true\n });\n target.addEventListener(propertyName.slice(2), function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n wrapper.dispatchEvent.apply(wrapper, __spreadArray([], __read(args)));\n });\n return;\n }\n Object.defineProperty(wrapper, propertyName, {\n enumerable: true,\n get: function () {\n return target[propertyName];\n }\n });\n}\n/**\n * This is a function for turning a Promise into the kind referenced in the\n * Legacy Interface Extensions section of the WebRTC spec.\n * @param {Promise<*>} promise\n * @param {function<*>} onSuccess\n * @param {function} onFailure\n * @returns {Promise}\n */\nfunction legacyPromise(promise, onSuccess, onFailure) {\n if (onSuccess) {\n return promise.then(function (result) {\n onSuccess(result);\n }, function (error) {\n onFailure(error);\n });\n }\n return promise;\n}\n/**\n * Build the {@link LogLevels} object.\n * @param {String|LogLevel} logLevel - Log level name or object\n * @returns {LogLevels}\n */\nfunction buildLogLevels(logLevel) {\n if (typeof logLevel === 'string') {\n return {\n default: logLevel,\n media: logLevel,\n signaling: logLevel,\n webrtc: logLevel\n };\n }\n return logLevel;\n}\n/**\n * Get the {@link Track}'s derived class name\n * @param {Track} track\n * @param {?boolean} [local=undefined]\n * @returns {string}\n */\nfunction trackClass(track, local) {\n local = local ? 'Local' : '';\n return local + (track.kind || '').replace(/\\w{1}/, function (m) { return m.toUpperCase(); }) + \"Track\";\n}\n/**\n * Get the {@link TrackPublication}'s derived class name\n * @param {TrackPublication} publication\n * @param {?boolean} [local=undefined]\n * @returns {string}\n */\nfunction trackPublicationClass(publication, local) {\n local = local ? 'Local' : '';\n return local + (publication.kind || '').replace(/\\w{1}/, function (m) { return m.toUpperCase(); }) + \"TrackPublication\";\n}\n/**\n * Sets all underscore-prefixed properties on `object` non-enumerable.\n * @param {Object} object\n * @returns {void}\n */\nfunction hidePrivateProperties(object) {\n Object.getOwnPropertyNames(object).forEach(function (name) {\n if (name.startsWith('_')) {\n hideProperty(object, name);\n }\n });\n}\n/**\n * Creates a new subclass which, in the constructor, sets all underscore-prefixed\n * properties and the given public properties non-enumerable. This is useful for\n * patching up classes like EventEmitter which may set properties like `_events`\n * and `domain`.\n * @param {Function} klass\n * @param {Array} props\n * @returns {Function} subclass\n */\nfunction hidePrivateAndCertainPublicPropertiesInClass(klass, props) {\n // NOTE(mroberts): We do this to avoid giving the class a name.\n return /** @class */ (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _this = _super.apply(this, __spreadArray([], __read(args))) || this;\n hidePrivateProperties(_this);\n hidePublicProperties(_this, props);\n return _this;\n }\n return class_1;\n }(klass));\n}\n/**\n * Hide a property of an object.\n * @param {object} object\n * @param {string} name\n */\nfunction hideProperty(object, name) {\n var descriptor = Object.getOwnPropertyDescriptor(object, name);\n descriptor.enumerable = false;\n Object.defineProperty(object, name, descriptor);\n}\n/**\n * Hide the given public properties of an object.\n * @param {object} object\n * @param {Array} [props=[]]\n */\nfunction hidePublicProperties(object, props) {\n if (props === void 0) { props = []; }\n props.forEach(function (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (object.hasOwnProperty(name)) {\n hideProperty(object, name);\n }\n });\n}\n/**\n * Convert an Array of values to an Array of JSON values by calling\n * `valueToJSON` on each value.\n * @param {Array<*>} array\n * @returns {Array<*>}\n */\nfunction arrayToJSON(array) {\n return array.map(valueToJSON);\n}\n/**\n * Convert a Set of values to an Array of JSON values by calling `valueToJSON`\n * on each value.\n * @param {Set<*>} set\n * @returns {Array<*>}\n */\nfunction setToJSON(set) {\n return arrayToJSON(__spreadArray([], __read(set)));\n}\n/**\n * Convert a Map from strings to values to an object of JSON values by calling\n * `valueToJSON` on each value.\n * @param {Map} map\n * @returns {object}\n */\nfunction mapToJSON(map) {\n return __spreadArray([], __read(map.entries())).reduce(function (json, _a) {\n var _b;\n var _c = __read(_a, 2), key = _c[0], value = _c[1];\n return Object.assign((_b = {}, _b[key] = valueToJSON(value), _b), json);\n }, {});\n}\n/**\n * Convert an object to a JSON value by calling `valueToJSON` on its enumerable\n * keys.\n * @param {object} object\n * @returns {object}\n */\nfunction objectToJSON(object) {\n return Object.entries(object).reduce(function (json, _a) {\n var _b;\n var _c = __read(_a, 2), key = _c[0], value = _c[1];\n return Object.assign((_b = {}, _b[key] = valueToJSON(value), _b), json);\n }, {});\n}\n/**\n * Convert a value into a JSON value.\n * @param {*} value\n * @returns {*}\n */\nfunction valueToJSON(value) {\n if (Array.isArray(value)) {\n return arrayToJSON(value);\n }\n else if (value instanceof Set) {\n return setToJSON(value);\n }\n else if (value instanceof Map) {\n return mapToJSON(value);\n }\n else if (value && typeof value === 'object') {\n return objectToJSON(value);\n }\n return value;\n}\nfunction createRoomConnectEventPayload(connectOptions) {\n function boolToString(val) {\n return val ? 'true' : 'false';\n }\n var payload = {\n sessionSID: sessionSID,\n // arrays props converted to lengths.\n iceServers: (connectOptions.iceServers || []).length,\n audioTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'audio'; }).length,\n videoTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'video'; }).length,\n dataTracks: (connectOptions.tracks || []).filter(function (track) { return track.kind === 'data'; }).length,\n };\n // boolean properties.\n [['audio'], ['automaticSubscription'], ['enableDscp'], ['eventListener'], ['preflight'], ['video'], ['dominantSpeaker', 'enableDominantSpeaker']].forEach(function (_a) {\n var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n eventProp = eventProp || prop;\n payload[eventProp] = boolToString(!!connectOptions[prop]);\n });\n // numbers properties.\n [['maxVideoBitrate'], ['maxAudioBitrate']].forEach(function (_a) {\n var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n eventProp = eventProp || prop;\n if (typeof connectOptions[prop] === 'number') {\n payload[eventProp] = connectOptions[prop];\n }\n else if (!isNaN(Number(connectOptions[prop]))) {\n payload[eventProp] = Number(connectOptions[prop]);\n }\n });\n // string properties.\n [['iceTransportPolicy'], ['region'], ['name', 'roomName']].forEach(function (_a) {\n var _b = __read(_a, 2), prop = _b[0], eventProp = _b[1];\n eventProp = eventProp || prop;\n if (typeof connectOptions[prop] === 'string') {\n payload[eventProp] = connectOptions[prop];\n }\n else if (typeof connectOptions[prop] === 'number' && prop === 'name') {\n payload[eventProp] = connectOptions[prop].toString();\n }\n });\n // array props stringified.\n ['preferredAudioCodecs', 'preferredVideoCodecs'].forEach(function (prop) {\n if (prop in connectOptions) {\n payload[prop] = JSON.stringify(connectOptions[prop]);\n }\n });\n if ('networkQuality' in connectOptions) {\n payload.networkQualityConfiguration = {};\n if (isNonArrayObject(connectOptions.networkQuality)) {\n ['local', 'remote'].forEach(function (prop) {\n if (typeof connectOptions.networkQuality[prop] === 'number') {\n payload.networkQualityConfiguration[prop] = connectOptions.networkQuality[prop];\n }\n });\n }\n else {\n payload.networkQualityConfiguration.remote = 0;\n payload.networkQualityConfiguration.local = connectOptions.networkQuality ? 1 : 0;\n }\n }\n if (connectOptions.bandwidthProfile && connectOptions.bandwidthProfile.video) {\n var videoBPOptions_1 = connectOptions.bandwidthProfile.video || {};\n payload.bandwidthProfileOptions = {};\n ['mode', 'maxTracks', 'trackSwitchOffMode', 'dominantSpeakerPriority', 'maxSubscriptionBitrate', 'renderDimensions', 'contentPreferencesMode', 'clientTrackSwitchOffControl'].forEach(function (prop) {\n if (typeof videoBPOptions_1[prop] === 'number' || typeof videoBPOptions_1[prop] === 'string') {\n payload.bandwidthProfileOptions[prop] = videoBPOptions_1[prop];\n }\n else if (typeof videoBPOptions_1[prop] === 'boolean') {\n payload.bandwidthProfileOptions[prop] = boolToString(videoBPOptions_1[prop]);\n }\n else if (typeof videoBPOptions_1[prop] === 'object') {\n payload.bandwidthProfileOptions[prop] = JSON.stringify(videoBPOptions_1[prop]);\n }\n });\n }\n return {\n group: 'room',\n name: 'connect',\n level: 'info',\n payload: payload\n };\n}\n/**\n * Create the bandwidth profile payload included in an RSP connect message.\n * @param {BandwidthProfileOptions} bandwidthProfile\n * @returns {object}\n */\nfunction createBandwidthProfilePayload(bandwidthProfile) {\n return createRSPPayload(bandwidthProfile, [\n { prop: 'video', type: 'object', transform: createBandwidthProfileVideoPayload }\n ]);\n}\n/**\n * Create the bandwidth profile video payload included in an RSP connect message.\n * @param {VideoBandwidthProfileOptions} bandwidthProfileVideo\n * @returns {object}\n */\nfunction createBandwidthProfileVideoPayload(bandwidthProfileVideo) {\n return createRSPPayload(bandwidthProfileVideo, [\n { prop: 'dominantSpeakerPriority', type: 'string', payloadProp: 'active_speaker_priority' },\n { prop: 'maxSubscriptionBitrate', type: 'number', payloadProp: 'max_subscription_bandwidth' },\n { prop: 'maxTracks', type: 'number', payloadProp: 'max_tracks' },\n { prop: 'mode', type: 'string' },\n { prop: 'renderDimensions', type: 'object', payloadProp: 'render_dimensions', transform: createRenderDimensionsPayload },\n { prop: 'trackSwitchOffMode', type: 'string', payloadProp: 'track_switch_off' }\n ]);\n}\n/**\n * Create the Media Signaling payload included in an RSP connect message.\n * @param {boolean} dominantSpeaker - whether to enable the Dominant Speaker\n * protocol or not\n * @param {boolean} networkQuality - whether to enable the Network Quality\n * protocol or not\n * @param {boolean} trackPriority - whether to enable the Track Priority\n * protocol or not\n * @param {boolean} trackSwitchOff - whether to enable the Track Switch-Off\n * protocol or not.\n * @param {boolean} renderHints - whether to enable the renderHints\n * protocol or not.\n * @returns {object}\n */\nfunction createMediaSignalingPayload(dominantSpeaker, networkQuality, trackPriority, trackSwitchOff, adaptiveSimulcast, renderHints) {\n var transports = { transports: [{ type: 'data-channel' }] };\n return Object.assign(dominantSpeaker\n // eslint-disable-next-line\n ? { active_speaker: transports }\n : {}, networkQuality\n // eslint-disable-next-line\n ? { network_quality: transports }\n : {}, renderHints\n // eslint-disable-next-line\n ? { render_hints: transports }\n : {}, adaptiveSimulcast\n // eslint-disable-next-line\n ? { publisher_hints: transports }\n : {}, trackPriority\n // eslint-disable-next-line\n ? { track_priority: transports }\n : {}, trackSwitchOff\n // eslint-disable-next-line\n ? { track_switch_off: transports }\n : {});\n}\n/**\n * Create {@link VideoTrack.Dimensions} RSP payload.\n * @param {VideoTrack.Dimensions} [dimensions]\n * @returns {object}\n */\nfunction createDimensionsPayload(dimensions) {\n return createRSPPayload(dimensions, [\n { prop: 'height', type: 'number' },\n { prop: 'width', type: 'number' }\n ]);\n}\n/**\n * Create {@link VideoRenderDimensions} RSP payload.\n * @param renderDimensions\n * @returns {object}\n */\nfunction createRenderDimensionsPayload(renderDimensions) {\n var PRIORITY_HIGH = trackPriority.PRIORITY_HIGH, PRIORITY_LOW = trackPriority.PRIORITY_LOW, PRIORITY_STANDARD = trackPriority.PRIORITY_STANDARD;\n return createRSPPayload(renderDimensions, [\n { prop: PRIORITY_HIGH, type: 'object', transform: createDimensionsPayload },\n { prop: PRIORITY_LOW, type: 'object', transform: createDimensionsPayload },\n { prop: PRIORITY_STANDARD, type: 'object', transform: createDimensionsPayload }\n ]);\n}\n/**\n * Create an RSP payload for the given object.\n * @param {object} object - object for which RSP payload is to be generated\n * @param {Array} propConversions - conversion rules for object properties;\n * they specify how object properties should be converted to their corresponding\n * RSP payload properties\n * @returns {object}\n */\nfunction createRSPPayload(object, propConversions) {\n return propConversions.reduce(function (payload, _a) {\n var _b;\n var prop = _a.prop, type = _a.type, _c = _a.payloadProp, payloadProp = _c === void 0 ? prop : _c, _d = _a.transform, transform = _d === void 0 ? function (x) { return x; } : _d;\n return typeof object[prop] === type\n ? Object.assign((_b = {}, _b[payloadProp] = transform(object[prop]), _b), payload)\n : payload;\n }, {});\n}\n/**\n * Create the subscribe payload included in an RSP connect/update message.\n * @param {boolean} automaticSubscription - whether to subscribe to all RemoteTracks\n * @returns {object}\n */\nfunction createSubscribePayload(automaticSubscription) {\n return {\n rules: [{\n type: automaticSubscription ? 'include' : 'exclude',\n all: true\n }],\n revision: 1\n };\n}\nfunction createMediaWarningsPayload(notifyWarnings) {\n var _a;\n var mediaWarnings = (_a = {},\n _a[TwilioWarning.recordingMediaLost] = 'recordings',\n _a);\n return notifyWarnings\n .map(function (twilioWarningName) { return mediaWarnings[twilioWarningName]; })\n .filter(function (name) { return !!name; });\n}\n/**\n * Add random jitter to a given value in the range [-jitter, jitter].\n * @private\n * @param {number} value\n * @param {number} jitter\n * @returns {number} value + random(-jitter, +jitter)\n */\nfunction withJitter(value, jitter) {\n var rand = Math.random();\n return value - jitter + Math.floor(2 * jitter * rand + 0.5);\n}\n/**\n * Checks if the a number is in the range [min, max].\n * @private\n * @param {num} num\n * @param {number} min\n * @param {number} max\n * @return {boolean}\n */\nfunction inRange(num, min, max) {\n return min <= num && num <= max;\n}\n/**\n * returns true if given MediaStreamTrack is a screen share track\n * @private\n * @param {MediaStreamTrack} track\n * @returns {boolean}\n */\nfunction isChromeScreenShareTrack(track) {\n // NOTE(mpatwardhan): Chrome creates screen share tracks with label like: \"screen:69734272*\"\n // we will check for label that starts with \"screen:D\" where D being a digit.\n return util.guessBrowser() === 'chrome' && track.kind === 'video' && 'displaySurface' in track.getSettings();\n}\n/**\n * Returns a promise that resolve after timeoutMS have passed.\n * @param {number} timeoutMS - time to wait in milliseconds.\n * @returns {Promise}\n */\nfunction waitForSometime(timeoutMS) {\n if (timeoutMS === void 0) { timeoutMS = 10; }\n return new Promise(function (resolve) { return setTimeout(resolve, timeoutMS); });\n}\n/**\n * Returns a promise that resolve after event is received\n * @returns {Promise}\n */\nfunction waitForEvent(eventTarget, event) {\n return new Promise(function (resolve) {\n eventTarget.addEventListener(event, function onevent(e) {\n eventTarget.removeEventListener(event, onevent);\n resolve(e);\n });\n });\n}\nexports.constants = constants;\nexports.createBandwidthProfilePayload = createBandwidthProfilePayload;\nexports.createMediaSignalingPayload = createMediaSignalingPayload;\nexports.createMediaWarningsPayload = createMediaWarningsPayload;\nexports.createRoomConnectEventPayload = createRoomConnectEventPayload;\nexports.createSubscribePayload = createSubscribePayload;\nexports.asLocalTrack = asLocalTrack;\nexports.asLocalTrackPublication = asLocalTrackPublication;\nexports.capitalize = capitalize;\nexports.deprecateEvents = deprecateEvents;\nexports.difference = difference;\nexports.filterObject = filterObject;\nexports.flatMap = flatMap;\nexports.getPlatform = getPlatform;\nexports.getUserAgent = getUserAgent;\nexports.hidePrivateProperties = hidePrivateProperties;\nexports.hidePrivateAndCertainPublicPropertiesInClass = hidePrivateAndCertainPublicPropertiesInClass;\nexports.isDeepEqual = isDeepEqual;\nexports.isNonArrayObject = isNonArrayObject;\nexports.inRange = inRange;\nexports.makeUUID = makeUUID;\nexports.oncePerTick = oncePerTick;\nexports.promiseFromEvents = promiseFromEvents;\nexports.getOrNull = getOrNull;\nexports.defer = defer;\nexports.delegateMethods = delegateMethods;\nexports.proxyProperties = proxyProperties;\nexports.legacyPromise = legacyPromise;\nexports.buildLogLevels = buildLogLevels;\nexports.trackClass = trackClass;\nexports.trackPublicationClass = trackPublicationClass;\nexports.valueToJSON = valueToJSON;\nexports.withJitter = withJitter;\nexports.isChromeScreenShareTrack = isChromeScreenShareTrack;\nexports.waitForSometime = waitForSometime;\nexports.waitForEvent = waitForEvent;\n//# sourceMappingURL=index.js.map","'use strict';\n/* eslint-disable camelcase */\nvar packageInfo = require('../../package.json');\nmodule.exports.SDK_NAME = packageInfo.name + \".js\";\nmodule.exports.SDK_VERSION = packageInfo.version;\nmodule.exports.SDP_FORMAT = 'unified';\nmodule.exports.hardwareDevicePublisheriPad = {\n hwDeviceManufacturer: 'Apple',\n hwDeviceModel: 'iPad',\n hwDeviceType: 'tablet',\n platformName: 'iOS'\n};\nmodule.exports.hardwareDevicePublisheriPhone = {\n hwDeviceManufacturer: 'Apple',\n hwDeviceModel: 'iPhone',\n hwDeviceType: 'mobile',\n platformName: 'iOS'\n};\nmodule.exports.DEFAULT_ENVIRONMENT = 'prod';\nmodule.exports.DEFAULT_REALM = 'us1';\nmodule.exports.DEFAULT_REGION = 'gll';\nmodule.exports.DEFAULT_LOG_LEVEL = 'warn';\nmodule.exports.DEFAULT_LOGGER_NAME = 'twilio-video';\nmodule.exports.WS_SERVER = function (environment, region) {\n region = region === 'gll' ? 'global' : encodeURIComponent(region);\n return environment === 'prod'\n ? \"wss://\" + region + \".vss.twilio.com/signaling\"\n : \"wss://\" + region + \".vss.\" + environment + \".twilio.com/signaling\";\n};\nmodule.exports.PUBLISH_MAX_ATTEMPTS = 5;\nmodule.exports.PUBLISH_BACKOFF_JITTER = 10;\nmodule.exports.PUBLISH_BACKOFF_MS = 20;\n/**\n * Returns the appropriate indefinite article (\"a\" | \"an\").\n * @param {string} word - The word which determines whether \"a\" | \"an\" is returned\n * @returns {string} \"a\" if word's first letter is a vowel, \"an\" otherwise\n */\nfunction article(word) {\n // NOTE(mmalavalli): This will not be accurate for words like \"hour\",\n // which have consonants as their first character, but are pronounced like\n // vowels. We can address this issue if the need arises.\n return ['a', 'e', 'i', 'o', 'u'].includes(word.toLowerCase()[0]) ? 'an' : 'a';\n}\nmodule.exports.typeErrors = {\n ILLEGAL_INVOKE: function (name, context) {\n return new TypeError(\"Illegal call to \" + name + \": \" + context);\n },\n INVALID_TYPE: function (name, type) {\n return new TypeError(name + \" must be \" + article(type) + \" \" + type);\n },\n INVALID_VALUE: function (name, values) {\n return new RangeError(name + \" must be one of \" + values.join(', '));\n },\n REQUIRED_ARGUMENT: function (name) {\n return new TypeError(name + \" must be specified\");\n }\n};\nmodule.exports.DEFAULT_FRAME_RATE = 24;\nmodule.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS = 10000;\nmodule.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS = 15000;\nmodule.exports.DEFAULT_SESSION_TIMEOUT_SEC = 30;\nmodule.exports.DEFAULT_NQ_LEVEL_LOCAL = 1;\nmodule.exports.DEFAULT_NQ_LEVEL_REMOTE = 0;\nmodule.exports.MAX_NQ_LEVEL = 3;\nmodule.exports.ICE_ACTIVITY_CHECK_PERIOD_MS = 1000;\nmodule.exports.ICE_INACTIVITY_THRESHOLD_MS = 3000;\nmodule.exports.iceRestartBackoffConfig = {\n factor: 1.1,\n min: 1,\n max: module.exports.DEFAULT_SESSION_TIMEOUT_SEC * 1000,\n jitter: 1\n};\nmodule.exports.reconnectBackoffConfig = {\n factor: 1.5,\n min: 80,\n jitter: 1\n};\nmodule.exports.subscriptionMode = {\n MODE_COLLABORATION: 'collaboration',\n MODE_GRID: 'grid',\n MODE_PRESENTATION: 'presentation'\n};\nmodule.exports.trackSwitchOffMode = {\n MODE_DISABLED: 'disabled',\n MODE_DETECTED: 'detected',\n MODE_PREDICTED: 'predicted'\n};\nmodule.exports.trackPriority = {\n PRIORITY_HIGH: 'high',\n PRIORITY_LOW: 'low',\n PRIORITY_STANDARD: 'standard'\n};\nmodule.exports.clientTrackSwitchOffControl = {\n MODE_AUTO: 'auto',\n MODE_MANUAL: 'manual'\n};\nmodule.exports.videoContentPreferencesMode = {\n MODE_AUTO: 'auto',\n MODE_MANUAL: 'manual'\n};\n//# sourceMappingURL=constants.js.map","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\t// we never freeze for a non-root scope; as it would prevent pruning for drafts inside wrapping objects\n\tif (!scope.parent_ && scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\n/**\n * Create a {@link Deferred}.\n * @returns {Deferred}\n */\nfunction defer() {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\n/**\n * Copy a method from a `source` prototype onto a `wrapper` prototype. Invoking\n * the method on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} methodName\n * @returns {undefined}\n */\nfunction delegateMethod(source, wrapper, target, methodName) {\n if (methodName in wrapper) {\n // Skip any methods already set.\n return;\n }\n else if (methodName.match(/^on[a-z]+$/)) {\n // Skip EventHandlers (these are handled in the constructor).\n return;\n }\n var isProperty = false;\n try {\n var propDesc = Object.getOwnPropertyDescriptor(source, methodName);\n isProperty = propDesc && !!propDesc.get;\n }\n catch (error) {\n // its okay to eat failure here.\n }\n // NOTE(mpatwardhan):skip properties. we are only interested in overriding\n // functions. we do not even want to evaluate `typeof source[methodName]` for properties\n // because getter would get invoked, and they might have side effects.\n // For example RTCPeerConnection.peerIdentity is a property that returns a promise.\n // calling typeof RTCPeerConnection.peerIdentity, would leak a promise, and in case it rejects\n // we see errors.\n if (isProperty) {\n return;\n }\n var type;\n try {\n type = typeof source[methodName];\n }\n catch (error) {\n // NOTE(mroberts): Attempting to check the type of non-function members\n // on the prototype throws an error for some types.\n }\n if (type !== 'function') {\n // Skip non-function members.\n return;\n }\n /* eslint no-loop-func:0 */\n wrapper[methodName] = function () {\n return this[target][methodName].apply(this[target], arguments);\n };\n}\n/**\n * Copy methods from a `source` prototype onto a `wrapper` prototype. Invoking\n * the methods on the `wrapper` prototype will invoke the corresponding method\n * on an instance accessed by `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction delegateMethods(source, wrapper, target) {\n for (var methodName in source) {\n delegateMethod(source, wrapper, target, methodName);\n }\n}\n/**\n * Finds the items in list1 that are not in list2.\n * @param {Array<*>|Map<*>|Set<*>} list1\n * @param {Array<*>|Map<*>|Set<*>} list2\n * @returns {Set}\n */\nfunction difference(list1, list2) {\n list1 = Array.isArray(list1) ? new Set(list1) : new Set(list1.values());\n list2 = Array.isArray(list2) ? new Set(list2) : new Set(list2.values());\n var difference = new Set();\n list1.forEach(function (item) {\n if (!list2.has(item)) {\n difference.add(item);\n }\n });\n return difference;\n}\n/**\n * Map a list to an array of arrays, and return the flattened result.\n * @param {Array<*>|Set<*>|Map<*>} list\n * @param {function(*): Array<*>} mapFn\n * @returns Array<*>\n */\nfunction flatMap(list, mapFn) {\n var listArray = list instanceof Map || list instanceof Set\n ? Array.from(list.values())\n : list;\n return listArray.reduce(function (flattened, item) { return flattened.concat(mapFn(item)); }, []);\n}\n/**\n * Get the browser's user agent, if available.\n * @returns {?string}\n */\nfunction getUserAgent() {\n return typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string'\n ? navigator.userAgent\n : null;\n}\n/**\n * Guess the browser.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?string} browser - \"chrome\", \"firefox\", \"safari\", or null\n */\nfunction guessBrowser(userAgent) {\n if (typeof userAgent === 'undefined') {\n userAgent = getUserAgent();\n }\n if (/Chrome|CriOS/.test(userAgent)) {\n return 'chrome';\n }\n if (/Firefox|FxiOS/.test(userAgent)) {\n return 'firefox';\n }\n if (/Safari|iPhone|iPad|iPod/.test(userAgent)) {\n return 'safari';\n }\n return null;\n}\n/**\n * Guess the browser version.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {?{major: number, minor: number}}\n */\nfunction guessBrowserVersion(userAgent) {\n if (typeof userAgent === 'undefined') {\n userAgent = getUserAgent();\n }\n var prefix = {\n chrome: 'Chrome|CriOS',\n firefox: 'Firefox|FxiOS',\n safari: 'Version'\n }[guessBrowser(userAgent)];\n if (!prefix) {\n return null;\n }\n var regex = new RegExp(\"(\" + prefix + \")/([^\\\\s]+)\");\n var _a = __read(userAgent.match(regex) || [], 3), match = _a[2];\n if (!match) {\n return null;\n }\n var versions = match.split('.').map(Number);\n return {\n major: isNaN(versions[0]) ? null : versions[0],\n minor: isNaN(versions[1]) ? null : versions[1]\n };\n}\n/**\n * Check whether the current browser is iOS Chrome.\n * @param {string} [userAgent=navigator.userAgent]\n * @returns {boolean}\n */\nfunction isIOSChrome(userAgent) {\n if (typeof userAgent === 'undefined') {\n userAgent = getUserAgent();\n }\n return (/Mobi/.test(userAgent) && guessBrowser() === 'chrome' && /iPad|iPhone|iPod/.test(userAgent));\n}\n/**\n * Intercept an event that might otherwise be proxied on an EventTarget.\n * @param {EventTarget} target\n * @param {string} type\n * @returns {void}\n */\nfunction interceptEvent(target, type) {\n var currentListener = null;\n Object.defineProperty(target, 'on' + type, {\n get: function () {\n return currentListener;\n },\n set: function (newListener) {\n if (currentListener) {\n this.removeEventListener(type, currentListener);\n }\n if (typeof newListener === 'function') {\n currentListener = newListener;\n this.addEventListener(type, currentListener);\n }\n else {\n currentListener = null;\n }\n }\n });\n}\n/**\n * This is a function for turning a Promise into the kind referenced in the\n * Legacy Interface Extensions section of the WebRTC spec.\n * @param {Promise<*>} promise\n * @param {function<*>} onSuccess\n * @param {function} onFailure\n * @returns {Promise}\n */\nfunction legacyPromise(promise, onSuccess, onFailure) {\n return onSuccess\n ? promise.then(onSuccess, onFailure)\n : promise;\n}\n/**\n * Make a unique ID.\n * @return {string}\n */\nfunction makeUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n/**\n * For each property name on the `source` prototype, add getters and/or setters\n * to `wrapper` that proxy to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @returns {undefined}\n */\nfunction proxyProperties(source, wrapper, target) {\n Object.getOwnPropertyNames(source).forEach(function (propertyName) {\n proxyProperty(source, wrapper, target, propertyName);\n });\n}\n/**\n * For the property name on the `source` prototype, add a getter and/or setter\n * to `wrapper` that proxies to `target`.\n * @param {object} source\n * @param {object} wrapper\n * @param {string} target\n * @param {string} propertyName\n * @returns {undefined}\n */\nfunction proxyProperty(source, wrapper, target, propertyName) {\n if (propertyName in wrapper) {\n // Skip any properties already set.\n return;\n }\n else if (propertyName.match(/^on[a-z]+$/)) {\n Object.defineProperty(wrapper, propertyName, {\n value: null,\n writable: true\n });\n target.addEventListener(propertyName.slice(2), function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return wrapper.dispatchEvent.apply(wrapper, __spreadArray([], __read(args)));\n });\n return;\n }\n Object.defineProperty(wrapper, propertyName, {\n enumerable: true,\n get: function () {\n return target[propertyName];\n }\n });\n}\n/**\n * Check whether native WebRTC APIs are supported.\n * @returns {boolean}\n */\nfunction support() {\n return typeof navigator === 'object'\n && typeof navigator.mediaDevices === 'object'\n && typeof navigator.mediaDevices.getUserMedia === 'function'\n && typeof RTCPeerConnection === 'function';\n}\n/**\n * Create a Set of supported codecs for a certain kind of media.\n * @param {'audio'|'video'} kind\n * @returns {Promise>}\n */\nfunction createSupportedCodecsSet(kind) {\n if (typeof RTCRtpSender !== 'undefined'\n && typeof RTCRtpSender.getCapabilities === 'function') {\n return Promise.resolve(new Set(RTCRtpSender\n .getCapabilities(kind)\n .codecs\n .map(function (_a) {\n var mimeType = _a.mimeType;\n return mimeType.split('/')[1].toLowerCase();\n })));\n }\n if (typeof RTCPeerConnection === 'undefined'\n || typeof RTCPeerConnection.prototype === 'undefined'\n || typeof RTCPeerConnection.prototype.addTransceiver !== 'function'\n || typeof RTCPeerConnection.prototype.close !== 'function'\n || typeof RTCPeerConnection.prototype.createOffer !== 'function') {\n return Promise.resolve(new Set());\n }\n var pc = new RTCPeerConnection();\n pc.addTransceiver(kind);\n return pc.createOffer().then(function (_a) {\n var sdp = _a.sdp;\n pc.close();\n return new Set((sdp.match(/^a=rtpmap:.+$/gm) || [])\n .map(function (line) { return line.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase(); }));\n }, function () {\n pc.close();\n return new Set();\n });\n}\n// NOTE(mmalavalli): Cache the supported audio and video codecs here.\nvar supportedCodecs = new Map();\n/**\n * Check whether a given codec for a certain kind of media is supported.\n * @param {AudioCodec|VideoCodec} codec\n * @param {'audio'|'video'} kind\n * @returns {Promise}\n */\nfunction isCodecSupported(codec, kind) {\n var codecs = supportedCodecs.get(kind);\n if (codecs) {\n return Promise.resolve(codecs.has(codec.toLowerCase()));\n }\n return createSupportedCodecsSet(kind).then(function (codecs) {\n supportedCodecs.set(kind, codecs);\n return codecs.has(codec.toLowerCase());\n });\n}\n/**\n * Clear cached supported codecs (unit tests only).\n */\nfunction clearCachedSupportedCodecs() {\n supportedCodecs.clear();\n}\n/**\n * @typedef {object} Deferred\n * @property {Promise} promise\n * @property {function} reject\n * @property {function} resolve\n */\nexports.clearCachedSupportedCodecs = clearCachedSupportedCodecs;\nexports.defer = defer;\nexports.delegateMethods = delegateMethods;\nexports.difference = difference;\nexports.flatMap = flatMap;\nexports.guessBrowser = guessBrowser;\nexports.guessBrowserVersion = guessBrowserVersion;\nexports.isCodecSupported = isCodecSupported;\nexports.isIOSChrome = isIOSChrome;\nexports.interceptEvent = interceptEvent;\nexports.legacyPromise = legacyPromise;\nexports.makeUUID = makeUUID;\nexports.proxyProperties = proxyProperties;\nexports.support = support;\n//# sourceMappingURL=index.js.map","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 0)\n ? toastAutoClose\n : containerAutoClose;\n}\n\nexport const canUseDom = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nexport function canBeRendered(content: T): boolean {\n return (\n isValidElement(content) || isStr(content) || isFn(content) || isNum(content)\n );\n}\n","import { ToastPosition, TypeOptions } from '../types';\n\ntype KeyOfPosition =\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'TOP_CENTER'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT'\n | 'BOTTOM_CENTER';\n\ntype KeyOfType = 'INFO' | 'SUCCESS' | 'WARNING' | 'ERROR' | 'DEFAULT';\n\nexport const POSITION: { [key in KeyOfPosition]: ToastPosition } = {\n TOP_LEFT: 'top-left',\n TOP_RIGHT: 'top-right',\n TOP_CENTER: 'top-center',\n BOTTOM_LEFT: 'bottom-left',\n BOTTOM_RIGHT: 'bottom-right',\n BOTTOM_CENTER: 'bottom-center'\n};\n\nexport const TYPE: { [key in KeyOfType]: TypeOptions } = {\n INFO: 'info',\n SUCCESS: 'success',\n WARNING: 'warning',\n ERROR: 'error',\n DEFAULT: 'default'\n};\n\nexport const enum Default {\n COLLAPSE_DURATION = 300,\n DEBOUNCE_DURATION = 50,\n CSS_NAMESPACE = 'Toastify',\n DRAGGABLE_PERCENT = 80\n}\n\nexport const enum Direction {\n X = 'x',\n Y = 'y'\n}\n\nexport const enum SyntheticEvent {\n ENTRANCE_ANIMATION_END = 'd'\n}\n","import React, { useEffect, useLayoutEffect, useRef } from 'react';\n\nimport { collapseToast } from './collapseToast';\nimport { Default, SyntheticEvent } from './constant';\n\nimport { ToastTransitionProps } from '../types';\n\nexport interface CSSTransitionProps {\n /**\n * Css class to apply when toast enter\n */\n enter: string;\n\n /**\n * Css class to apply when toast leave\n */\n exit: string;\n\n /**\n * Append current toast position to the classname.\n * If multiple classes are provided, only the last one will get the position\n * For instance `myclass--top-center`...\n * `Default: false`\n */\n appendPosition?: boolean;\n\n /**\n * Collapse toast smoothly when exit animation end\n * `Default: true`\n */\n collapse?: boolean;\n\n /**\n * Collapse transition duration\n * `Default: 300`\n */\n collapseDuration?: number;\n}\n\nconst enum AnimationStep {\n Enter,\n Exit\n}\n\n/**\n * Css animation that just work.\n * You could use animate.css for instance\n *\n *\n * ```\n * cssTransition({\n * enter: \"animate__animated animate__bounceIn\",\n * exit: \"animate__animated animate__bounceOut\"\n * })\n * ```\n *\n */\nexport function cssTransition({\n enter,\n exit,\n appendPosition = false,\n collapse = true,\n collapseDuration = Default.COLLAPSE_DURATION\n}: CSSTransitionProps) {\n return function ToastTransition({\n children,\n position,\n preventExitTransition,\n done,\n nodeRef,\n isIn\n }: ToastTransitionProps) {\n const enterClassName = appendPosition ? `${enter}--${position}` : enter;\n const exitClassName = appendPosition ? `${exit}--${position}` : exit;\n const baseClassName = useRef();\n const animationStep = useRef(AnimationStep.Enter);\n\n useLayoutEffect(() => {\n onEnter();\n }, []);\n\n useEffect(() => {\n if (!isIn) preventExitTransition ? onExited() : onExit();\n }, [isIn]);\n\n function onEnter() {\n const node = nodeRef.current!;\n baseClassName.current = node.className;\n node.className += ` ${enterClassName}`;\n node.addEventListener('animationend', onEntered);\n node.addEventListener('animationcancel', onEntered);\n }\n\n function onEntered(e: AnimationEvent) {\n if (e.target !== nodeRef.current) return;\n\n const node = nodeRef.current!;\n node.dispatchEvent(new Event(SyntheticEvent.ENTRANCE_ANIMATION_END));\n node.removeEventListener('animationend', onEntered);\n node.removeEventListener('animationcancel', onEntered);\n if (animationStep.current === AnimationStep.Enter) {\n node.className = baseClassName.current!;\n }\n }\n\n function onExit() {\n animationStep.current = AnimationStep.Exit;\n const node = nodeRef.current!;\n\n node.className += ` ${exitClassName}`;\n node.addEventListener('animationend', onExited);\n }\n\n function onExited() {\n const node = nodeRef.current!;\n\n node.removeEventListener('animationend', onExited);\n collapse ? collapseToast(node, done, collapseDuration) : done();\n }\n\n return <>{children};\n };\n}\n","import { Default } from './constant';\n\n/**\n * Used to collapse toast after exit animation\n */\nexport function collapseToast(\n node: HTMLElement,\n done: () => void,\n duration = Default.COLLAPSE_DURATION\n) {\n const { scrollHeight, style } = node;\n\n requestAnimationFrame(() => {\n style.minHeight = 'initial';\n style.height = scrollHeight + 'px';\n style.transition = `all ${duration}ms`;\n\n requestAnimationFrame(() => {\n style.height = '0';\n style.padding = '0';\n style.margin = '0';\n setTimeout(done, duration as number);\n });\n });\n}\n","import {\n Id,\n ToastContent,\n ClearWaitingQueueParams,\n NotValidatedToastProps\n} from '../types';\nimport { ContainerInstance } from '../hooks';\n\nexport const enum Event {\n Show,\n Clear,\n DidMount,\n WillUnmount,\n Change,\n ClearWaitingQueue\n}\n\ntype OnShowCallback = (\n content: ToastContent,\n options: NotValidatedToastProps\n) => void;\ntype OnClearCallback = (id?: Id) => void;\ntype OnClearWaitingQueue = (params: ClearWaitingQueueParams) => void;\ntype OnDidMountCallback = (containerInstance: ContainerInstance) => void;\ntype OnWillUnmountCallback = OnDidMountCallback;\nexport type OnChangeCallback = (\n toast: number,\n containerId?: number | string\n) => void;\ntype Callback =\n | OnShowCallback\n | OnClearCallback\n | OnClearWaitingQueue\n | OnDidMountCallback\n | OnWillUnmountCallback\n | OnChangeCallback;\ntype TimeoutId = ReturnType;\n\nexport interface EventManager {\n list: Map;\n emitQueue: Map;\n on(event: Event.Show, callback: OnShowCallback): EventManager;\n on(event: Event.Clear, callback: OnClearCallback): EventManager;\n on(\n event: Event.ClearWaitingQueue,\n callback: OnClearWaitingQueue\n ): EventManager;\n on(event: Event.DidMount, callback: OnDidMountCallback): EventManager;\n on(event: Event.WillUnmount, callback: OnWillUnmountCallback): EventManager;\n on(event: Event.Change, callback: OnChangeCallback): EventManager;\n off(event: Event, callback?: Callback): EventManager;\n cancelEmit(event: Event): EventManager;\n emit(\n event: Event.Show,\n content: React.ReactNode,\n options: NotValidatedToastProps\n ): void;\n emit(event: Event.Clear, id?: string | number): void;\n emit(event: Event.ClearWaitingQueue, params: ClearWaitingQueueParams): void;\n emit(event: Event.DidMount, containerInstance: ContainerInstance): void;\n emit(event: Event.WillUnmount, containerInstance: ContainerInstance): void;\n emit(event: Event.Change, toast: number, containerId?: number | string): void;\n}\n\nexport const eventManager: EventManager = {\n list: new Map(),\n emitQueue: new Map(),\n\n on(event: Event, callback: Callback) {\n this.list.has(event) || this.list.set(event, []);\n this.list.get(event)!.push(callback);\n return this;\n },\n\n off(event, callback) {\n if (callback) {\n const cb = this.list.get(event)!.filter(cb => cb !== callback);\n this.list.set(event, cb);\n return this;\n }\n this.list.delete(event);\n return this;\n },\n\n cancelEmit(event) {\n const timers = this.emitQueue.get(event);\n if (timers) {\n timers.forEach(clearTimeout);\n this.emitQueue.delete(event);\n }\n\n return this;\n },\n\n /**\n * Enqueue the event at the end of the call stack\n * Doing so let the user call toast as follow:\n * toast('1')\n * toast('2')\n * toast('3')\n * Without setTimemout the code above will not work\n */\n emit(event: Event, ...args: any[]) {\n this.list.has(event) &&\n this.list.get(event)!.forEach((callback: Callback) => {\n const timer: TimeoutId = setTimeout(() => {\n // @ts-ignore\n callback(...args);\n }, 0);\n\n this.emitQueue.has(event) || this.emitQueue.set(event, []);\n this.emitQueue.get(event)!.push(timer);\n });\n }\n};\n","import {\n useEffect,\n useRef,\n useReducer,\n cloneElement,\n isValidElement,\n useState\n} from 'react';\nimport {\n parseClassName,\n canBeRendered,\n isBool,\n isFn,\n isNum,\n isStr,\n isToastIdValid,\n getAutoCloseDelay\n} from '../utils';\nimport { eventManager, Event } from '../core/eventManager';\n\nimport {\n Id,\n ToastContainerProps,\n ToastProps,\n ToastContent,\n Toast,\n ToastPosition,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n ToastTransition\n} from '../types';\n\ninterface QueuedToast {\n toastContent: ToastContent;\n toastProps: ToastProps;\n staleId?: Id;\n}\n\nexport interface ContainerInstance {\n toastKey: number;\n displayedToast: number;\n props: ToastContainerProps;\n containerId?: Id | null;\n isToastActive: (toastId: Id) => boolean;\n getToast: (id: Id) => Toast | null | undefined;\n queue: QueuedToast[];\n count: number;\n}\n\nexport function useToastContainer(props: ToastContainerProps) {\n const [, forceUpdate] = useReducer(x => x + 1, 0);\n const [toastIds, setToastIds] = useState([]);\n const containerRef = useRef(null);\n const toastToRender = useRef(new Map()).current;\n const isToastActive = (id: Id) => toastIds.indexOf(id) !== -1;\n const instance = useRef({\n toastKey: 1,\n displayedToast: 0,\n count: 0,\n queue: [],\n props,\n containerId: null,\n isToastActive,\n getToast: id => toastToRender.get(id)\n }).current;\n\n useEffect(() => {\n instance.containerId = props.containerId;\n eventManager\n .cancelEmit(Event.WillUnmount)\n .on(Event.Show, buildToast)\n .on(Event.Clear, toastId => containerRef.current && removeToast(toastId))\n .on(Event.ClearWaitingQueue, clearWaitingQueue)\n .emit(Event.DidMount, instance);\n\n return () => eventManager.emit(Event.WillUnmount, instance);\n }, []);\n\n useEffect(() => {\n instance.isToastActive = isToastActive;\n instance.displayedToast = toastIds.length;\n eventManager.emit(Event.Change, toastIds.length, props.containerId);\n }, [toastIds]);\n\n useEffect(() => {\n instance.props = props;\n });\n\n function clearWaitingQueue({ containerId }: ClearWaitingQueueParams) {\n const { limit } = instance.props;\n if (limit && (!containerId || instance.containerId === containerId)) {\n instance.count -= instance.queue.length;\n instance.queue = [];\n }\n }\n\n function removeToast(toastId?: Id) {\n setToastIds(state =>\n isToastIdValid(toastId) ? state.filter(id => id !== toastId) : []\n );\n }\n\n function dequeueToast() {\n const {\n toastContent,\n toastProps,\n staleId\n } = instance.queue.shift() as QueuedToast;\n appendToast(toastContent, toastProps, staleId);\n }\n\n /**\n * check if a container is attached to the dom\n * check for multi-container, build only if associated\n * check for duplicate toastId if no update\n */\n function isNotValid(options: NotValidatedToastProps) {\n return (\n !containerRef.current ||\n (instance.props.enableMultiContainer &&\n options.containerId !== instance.props.containerId) ||\n (toastToRender.has(options.toastId) && options.updateId == null)\n );\n }\n\n // this function and all the function called inside needs to rely on refs\n function buildToast(\n content: ToastContent,\n { delay, staleId, ...options }: NotValidatedToastProps\n ) {\n if (!canBeRendered(content) || isNotValid(options)) return;\n\n const { toastId, updateId, data } = options;\n const { props } = instance;\n const closeToast = () => removeToast(toastId);\n const isNotAnUpdate = updateId == null;\n\n if (isNotAnUpdate) instance.count++;\n\n const toastProps: ToastProps = {\n toastId,\n updateId,\n isLoading: options.isLoading,\n theme: options.theme || props.theme!,\n icon: options.icon != null ? options.icon : props.icon,\n isIn: false,\n key: options.key || instance.toastKey++,\n type: options.type!,\n closeToast: closeToast,\n closeButton: options.closeButton,\n rtl: props.rtl,\n position: options.position || (props.position as ToastPosition),\n transition: options.transition || (props.transition as ToastTransition),\n className: parseClassName(options.className || props.toastClassName),\n bodyClassName: parseClassName(\n options.bodyClassName || props.bodyClassName\n ),\n style: options.style || props.toastStyle,\n bodyStyle: options.bodyStyle || props.bodyStyle,\n onClick: options.onClick || props.onClick,\n pauseOnHover: isBool(options.pauseOnHover)\n ? options.pauseOnHover\n : props.pauseOnHover,\n pauseOnFocusLoss: isBool(options.pauseOnFocusLoss)\n ? options.pauseOnFocusLoss\n : props.pauseOnFocusLoss,\n draggable: isBool(options.draggable)\n ? options.draggable\n : props.draggable,\n draggablePercent:\n options.draggablePercent || (props.draggablePercent as number),\n draggableDirection:\n options.draggableDirection || props.draggableDirection,\n closeOnClick: isBool(options.closeOnClick)\n ? options.closeOnClick\n : props.closeOnClick,\n progressClassName: parseClassName(\n options.progressClassName || props.progressClassName\n ),\n progressStyle: options.progressStyle || props.progressStyle,\n autoClose: options.isLoading\n ? false\n : getAutoCloseDelay(options.autoClose, props.autoClose),\n hideProgressBar: isBool(options.hideProgressBar)\n ? options.hideProgressBar\n : props.hideProgressBar,\n progress: options.progress,\n role: options.role || props.role,\n deleteToast() {\n toastToRender.delete(toastId);\n const queueLen = instance.queue.length;\n instance.count = isToastIdValid(toastId)\n ? instance.count - 1\n : instance.count - instance.displayedToast;\n\n if (instance.count < 0) instance.count = 0;\n\n if (queueLen > 0) {\n const freeSlot = isToastIdValid(toastId) ? 1 : instance.props.limit!;\n\n if (queueLen === 1 || freeSlot === 1) {\n instance.displayedToast++;\n dequeueToast();\n } else {\n const toDequeue = freeSlot > queueLen ? queueLen : freeSlot;\n instance.displayedToast = toDequeue;\n\n for (let i = 0; i < toDequeue; i++) dequeueToast();\n }\n } else {\n forceUpdate();\n }\n }\n };\n\n if (isFn(options.onOpen)) toastProps.onOpen = options.onOpen;\n if (isFn(options.onClose)) toastProps.onClose = options.onClose;\n\n toastProps.closeButton = props.closeButton;\n\n if (options.closeButton === false || canBeRendered(options.closeButton)) {\n toastProps.closeButton = options.closeButton;\n } else if (options.closeButton === true) {\n toastProps.closeButton = canBeRendered(props.closeButton)\n ? props.closeButton\n : true;\n }\n\n let toastContent = content;\n\n if (isValidElement(content) && !isStr(content.type)) {\n toastContent = cloneElement(content, {\n closeToast,\n toastProps,\n data\n });\n } else if (isFn(content)) {\n toastContent = content({ closeToast, toastProps, data });\n }\n\n // not handling limit + delay by design. Waiting for user feedback first\n if (\n props.limit &&\n props.limit > 0 &&\n instance.count > props.limit &&\n isNotAnUpdate\n ) {\n instance.queue.push({ toastContent, toastProps, staleId });\n } else if (isNum(delay) && (delay as number) > 0) {\n setTimeout(() => {\n appendToast(toastContent, toastProps, staleId);\n }, delay);\n } else {\n appendToast(toastContent, toastProps, staleId);\n }\n }\n\n function appendToast(\n content: ToastContent,\n toastProps: ToastProps,\n staleId?: Id\n ) {\n const { toastId } = toastProps;\n\n if (staleId) toastToRender.delete(staleId);\n\n toastToRender.set(toastId, {\n content,\n props: toastProps\n });\n setToastIds(state => [...state, toastId].filter(id => id !== staleId));\n }\n\n function getToastToRender(\n cb: (position: ToastPosition, toastList: Toast[]) => T\n ) {\n const toRender = new Map();\n const collection = Array.from(toastToRender.values());\n\n if (props.newestOnTop) collection.reverse();\n\n collection.forEach(toast => {\n const { position } = toast.props;\n toRender.has(position) || toRender.set(position, []);\n toRender.get(position)!.push(toast);\n });\n\n return Array.from(toRender, p => cb(p[0], p[1]));\n }\n\n return {\n getToastToRender,\n containerRef,\n isToastActive\n };\n}\n","import {\n useState,\n useRef,\n useEffect,\n isValidElement,\n DOMAttributes\n} from 'react';\n\nimport { isFn, Default, Direction, SyntheticEvent } from '../utils';\nimport { ToastProps } from '../types';\n\ninterface Draggable {\n start: number;\n x: number;\n y: number;\n delta: number;\n removalDistance: number;\n canCloseOnClick: boolean;\n canDrag: boolean;\n boundingRect: DOMRect | null;\n didMove: boolean;\n}\n\ntype DragEvent = MouseEvent & TouchEvent;\n\nfunction getX(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientX\n : e.clientX;\n}\n\nfunction getY(e: DragEvent) {\n return e.targetTouches && e.targetTouches.length >= 1\n ? e.targetTouches[0].clientY\n : e.clientY;\n}\n\nexport function useToast(props: ToastProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [preventExitTransition, setPreventExitTransition] = useState(false);\n const toastRef = useRef(null);\n const drag = useRef({\n start: 0,\n x: 0,\n y: 0,\n delta: 0,\n removalDistance: 0,\n canCloseOnClick: true,\n canDrag: false,\n boundingRect: null,\n didMove: false\n }).current;\n const syncProps = useRef(props);\n const { autoClose, pauseOnHover, closeToast, onClick, closeOnClick } = props;\n\n useEffect(() => {\n syncProps.current = props;\n });\n\n useEffect(() => {\n if (toastRef.current)\n toastRef.current.addEventListener(\n SyntheticEvent.ENTRANCE_ANIMATION_END,\n playToast,\n { once: true }\n );\n\n if (isFn(props.onOpen))\n props.onOpen(isValidElement(props.children) && props.children.props);\n\n return () => {\n const props = syncProps.current;\n if (isFn(props.onClose))\n props.onClose(isValidElement(props.children) && props.children.props);\n };\n }, []);\n\n useEffect(() => {\n props.pauseOnFocusLoss && bindFocusEvents();\n return () => {\n props.pauseOnFocusLoss && unbindFocusEvents();\n };\n }, [props.pauseOnFocusLoss]);\n\n function onDragStart(\n e: React.MouseEvent | React.TouchEvent\n ) {\n if (props.draggable) {\n bindDragEvents();\n const toast = toastRef.current!;\n drag.canCloseOnClick = true;\n drag.canDrag = true;\n drag.boundingRect = toast.getBoundingClientRect();\n toast.style.transition = '';\n drag.x = getX(e.nativeEvent as DragEvent);\n drag.y = getY(e.nativeEvent as DragEvent);\n\n if (props.draggableDirection === Direction.X) {\n drag.start = drag.x;\n drag.removalDistance =\n toast.offsetWidth * (props.draggablePercent / 100);\n } else {\n drag.start = drag.y;\n drag.removalDistance =\n toast.offsetHeight *\n (props.draggablePercent === Default.DRAGGABLE_PERCENT\n ? props.draggablePercent * 1.5\n : props.draggablePercent / 100);\n }\n }\n }\n\n function onDragTransitionEnd() {\n if (drag.boundingRect) {\n const { top, bottom, left, right } = drag.boundingRect;\n\n if (\n props.pauseOnHover &&\n drag.x >= left &&\n drag.x <= right &&\n drag.y >= top &&\n drag.y <= bottom\n ) {\n pauseToast();\n } else {\n playToast();\n }\n }\n }\n\n function playToast() {\n setIsRunning(true);\n }\n\n function pauseToast() {\n setIsRunning(false);\n }\n\n function bindFocusEvents() {\n if (!document.hasFocus()) pauseToast();\n\n window.addEventListener('focus', playToast);\n window.addEventListener('blur', pauseToast);\n }\n\n function unbindFocusEvents() {\n window.removeEventListener('focus', playToast);\n window.removeEventListener('blur', pauseToast);\n }\n\n function bindDragEvents() {\n drag.didMove = false;\n document.addEventListener('mousemove', onDragMove);\n document.addEventListener('mouseup', onDragEnd);\n\n document.addEventListener('touchmove', onDragMove);\n document.addEventListener('touchend', onDragEnd);\n }\n\n function unbindDragEvents() {\n document.removeEventListener('mousemove', onDragMove);\n document.removeEventListener('mouseup', onDragEnd);\n\n document.removeEventListener('touchmove', onDragMove);\n document.removeEventListener('touchend', onDragEnd);\n }\n\n function onDragMove(e: MouseEvent | TouchEvent) {\n const toast = toastRef.current!;\n if (drag.canDrag && toast) {\n drag.didMove = true;\n if (isRunning) pauseToast();\n drag.x = getX(e as DragEvent);\n drag.y = getY(e as DragEvent);\n if (props.draggableDirection === Direction.X) {\n drag.delta = drag.x - drag.start;\n } else {\n drag.delta = drag.y - drag.start;\n }\n\n // prevent false positif during a toast click\n if (drag.start !== drag.x) drag.canCloseOnClick = false;\n toast.style.transform = `translate${props.draggableDirection}(${drag.delta}px)`;\n toast.style.opacity = `${1 -\n Math.abs(drag.delta / drag.removalDistance)}`;\n }\n }\n\n function onDragEnd() {\n unbindDragEvents();\n const toast = toastRef.current!;\n if (drag.canDrag && drag.didMove && toast) {\n drag.canDrag = false;\n if (Math.abs(drag.delta) > drag.removalDistance) {\n setPreventExitTransition(true);\n props.closeToast();\n return;\n }\n toast.style.transition = 'transform 0.2s, opacity 0.2s';\n toast.style.transform = `translate${props.draggableDirection}(0)`;\n toast.style.opacity = '1';\n }\n }\n\n const eventHandlers: DOMAttributes = {\n onMouseDown: onDragStart,\n onTouchStart: onDragStart,\n onMouseUp: onDragTransitionEnd,\n onTouchEnd: onDragTransitionEnd\n };\n\n if (autoClose && pauseOnHover) {\n eventHandlers.onMouseEnter = pauseToast;\n eventHandlers.onMouseLeave = playToast;\n }\n\n // prevent toast from closing when user drags the toast\n if (closeOnClick) {\n eventHandlers.onClick = (e: React.MouseEvent) => {\n onClick && onClick(e);\n drag.canCloseOnClick && closeToast();\n };\n }\n\n return {\n playToast,\n pauseToast,\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n };\n}\n","import * as React from 'react';\nimport { Default } from '../utils';\nimport { Theme, TypeOptions } from '../types';\n\nexport interface CloseButtonProps {\n closeToast: (e: React.MouseEvent) => void;\n type: TypeOptions;\n ariaLabel?: string;\n theme: Theme;\n}\n\nexport function CloseButton({\n closeToast,\n theme,\n ariaLabel = 'close'\n}: CloseButtonProps) {\n return (\n {\n e.stopPropagation();\n closeToast(e);\n }}\n aria-label={ariaLabel}\n >\n \n \n \n \n );\n}\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { TYPE, Default, isFn } from './../utils';\nimport { TypeOptions, ToastClassName, Theme } from '../types';\n\nexport interface ProgressBarProps {\n /**\n * The animation delay which determine when to close the toast\n */\n delay: number;\n\n /**\n * Whether or not the animation is running or paused\n */\n isRunning: boolean;\n\n /**\n * Func to close the current toast\n */\n closeToast: () => void;\n\n /**\n * Optional type : info, success ...\n */\n type: TypeOptions;\n\n /**\n * The theme that is currently used\n */\n theme: Theme;\n\n /**\n * Hide or not the progress bar\n */\n hide?: boolean;\n\n /**\n * Optionnal className\n */\n className?: ToastClassName;\n\n /**\n * Optionnal inline style\n */\n style?: React.CSSProperties;\n\n /**\n * Tell wether or not controlled progress bar is used\n */\n controlledProgress?: boolean;\n\n /**\n * Controlled progress value\n */\n progress?: number | string;\n\n /**\n * Support rtl content\n */\n rtl?: boolean;\n\n /**\n * Tell if the component is visible on screen or not\n */\n isIn?: boolean;\n}\n\nexport function ProgressBar({\n delay,\n isRunning,\n closeToast,\n type,\n hide,\n className,\n style: userStyle,\n controlledProgress,\n progress,\n rtl,\n isIn,\n theme\n}: ProgressBarProps) {\n const style: React.CSSProperties = {\n ...userStyle,\n animationDuration: `${delay}ms`,\n animationPlayState: isRunning ? 'running' : 'paused',\n opacity: hide ? 0 : 1\n };\n\n if (controlledProgress) style.transform = `scaleX(${progress})`;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__progress-bar`,\n controlledProgress\n ? `${Default.CSS_NAMESPACE}__progress-bar--controlled`\n : `${Default.CSS_NAMESPACE}__progress-bar--animated`,\n `${Default.CSS_NAMESPACE}__progress-bar-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__progress-bar--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__progress-bar--rtl`]: rtl\n }\n );\n const classNames = isFn(className)\n ? className({\n rtl,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n\n // 🧐 controlledProgress is derived from progress\n // so if controlledProgress is set\n // it means that this is also the case for progress\n const animationEvent = {\n [controlledProgress && progress! >= 1\n ? 'onTransitionEnd'\n : 'onAnimationEnd']:\n controlledProgress && progress! < 1\n ? null\n : () => {\n isIn && closeToast();\n }\n };\n\n // TODO: add aria-valuenow, aria-valuemax, aria-valuemin\n\n return (\n \n );\n}\n\nProgressBar.defaultProps = {\n type: TYPE.DEFAULT,\n hide: false\n};\n","import * as React from 'react';\n\nimport { Theme, TypeOptions } from '../types';\nimport { Default } from '../utils';\n\n/**\n * Used when providing custom icon\n */\nexport interface IconProps {\n theme: Theme;\n type: TypeOptions;\n}\n\nexport type BuiltInIconProps = React.SVGProps & IconProps;\n\nconst Svg: React.FC = ({ theme, type, ...rest }) => (\n \n);\n\nfunction Warning(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Info(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Success(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Error(props: BuiltInIconProps) {\n return (\n \n \n \n );\n}\n\nfunction Spinner() {\n return
;\n}\n\nexport const Icons = {\n info: Info,\n warning: Warning,\n success: Success,\n error: Error,\n spinner: Spinner\n};\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { ProgressBar } from './ProgressBar';\nimport { Icons } from './Icons';\nimport { ToastProps } from '../types';\nimport { Default, isFn, isStr } from '../utils';\nimport { useToast } from '../hooks';\n\nexport const Toast: React.FC = props => {\n const {\n isRunning,\n preventExitTransition,\n toastRef,\n eventHandlers\n } = useToast(props);\n const {\n closeButton,\n children,\n autoClose,\n onClick,\n type,\n hideProgressBar,\n closeToast,\n transition: Transition,\n position,\n className,\n style,\n bodyClassName,\n bodyStyle,\n progressClassName,\n progressStyle,\n updateId,\n role,\n progress,\n rtl,\n toastId,\n deleteToast,\n isIn,\n isLoading,\n icon,\n theme\n } = props;\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast`,\n `${Default.CSS_NAMESPACE}__toast-theme--${theme}`,\n `${Default.CSS_NAMESPACE}__toast--${type}`,\n {\n [`${Default.CSS_NAMESPACE}__toast--rtl`]: rtl\n }\n );\n const cssClasses = isFn(className)\n ? className({\n rtl,\n position,\n type,\n defaultClassName\n })\n : cx(defaultClassName, className);\n const isProgressControlled = !!progress;\n const maybeIcon = Icons[type as keyof typeof Icons];\n const iconProps = { theme, type };\n let Icon: React.ReactNode = maybeIcon && maybeIcon(iconProps);\n\n if (icon === false) {\n Icon = void 0;\n } else if (isFn(icon)) {\n Icon = icon(iconProps);\n } else if (React.isValidElement(icon)) {\n Icon = React.cloneElement(icon, iconProps);\n } else if (isStr(icon)) {\n Icon = icon;\n } else if (isLoading) {\n Icon = Icons.spinner();\n }\n\n function renderCloseButton(closeButton: any) {\n if (!closeButton) return;\n\n const props = { closeToast, type, theme };\n\n if (isFn(closeButton)) return closeButton(props);\n\n if (React.isValidElement(closeButton))\n return React.cloneElement(closeButton, props);\n }\n\n return (\n \n \n \n {Icon && (\n \n {Icon}\n
\n )}\n
{children}
\n \n {renderCloseButton(closeButton)}\n {(autoClose || isProgressControlled) && (\n \n )}\n \n \n );\n};\n","import { Default, cssTransition } from '../utils';\n\nconst Bounce = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__bounce-exit`,\n appendPosition: true\n});\n\nconst Slide = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__slide-exit`,\n appendPosition: true\n});\n\nconst Zoom = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__zoom-exit`\n});\n\nconst Flip = cssTransition({\n enter: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-enter`,\n exit: `${Default.CSS_NAMESPACE}--animate ${Default.CSS_NAMESPACE}__flip-exit`\n});\n\nexport { Bounce, Slide, Zoom, Flip };\n","import * as React from 'react';\nimport cx from 'clsx';\n\nimport { Toast } from './Toast';\nimport { CloseButton } from './CloseButton';\nimport { Bounce } from './Transitions';\nimport { POSITION, Direction, Default, parseClassName, isFn } from '../utils';\nimport { useToastContainer } from '../hooks';\nimport { ToastContainerProps, ToastPosition } from '../types';\n\nexport const ToastContainer: React.FC = props => {\n const { getToastToRender, containerRef, isToastActive } = useToastContainer(\n props\n );\n const { className, style, rtl, containerId } = props;\n\n function getClassName(position: ToastPosition) {\n const defaultClassName = cx(\n `${Default.CSS_NAMESPACE}__toast-container`,\n `${Default.CSS_NAMESPACE}__toast-container--${position}`,\n { [`${Default.CSS_NAMESPACE}__toast-container--rtl`]: rtl }\n );\n return isFn(className)\n ? className({\n position,\n rtl,\n defaultClassName\n })\n : cx(defaultClassName, parseClassName(className));\n }\n\n return (\n \n {getToastToRender((position, toastList) => {\n const containerStyle: React.CSSProperties = !toastList.length\n ? { ...style, pointerEvents: 'none' }\n : { ...style };\n\n return (\n \n {toastList.map(({ content, props: toastProps }) => {\n return (\n \n {content}\n \n );\n })}\n \n );\n })}\n \n );\n};\n\nToastContainer.defaultProps = {\n position: POSITION.TOP_RIGHT as ToastPosition,\n transition: Bounce,\n rtl: false,\n autoClose: 5000,\n hideProgressBar: false,\n closeButton: CloseButton,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n closeOnClick: true,\n newestOnTop: false,\n draggable: true,\n draggablePercent: Default.DRAGGABLE_PERCENT as number,\n draggableDirection: Direction.X,\n role: 'alert',\n theme: 'light'\n};\n","import * as React from 'react';\nimport { render } from 'react-dom';\n\nimport { POSITION, TYPE, canUseDom, isStr, isNum, isFn } from '../utils';\nimport { eventManager, OnChangeCallback, Event } from './eventManager';\nimport {\n ToastContent,\n ToastOptions,\n ToastProps,\n Id,\n ToastContainerProps,\n UpdateOptions,\n ClearWaitingQueueParams,\n NotValidatedToastProps,\n TypeOptions\n} from '../types';\nimport { ContainerInstance } from '../hooks';\nimport { ToastContainer } from '../components';\n\ninterface EnqueuedToast {\n content: ToastContent;\n options: NotValidatedToastProps;\n}\n\nlet containers = new Map();\nlet latestInstance: ContainerInstance | Id;\nlet containerDomNode: HTMLElement;\nlet containerConfig: ToastContainerProps;\nlet queue: EnqueuedToast[] = [];\nlet lazy = false;\n\n/**\n * Get the toast by id, given it's in the DOM, otherwise returns null\n */\nfunction getToast(toastId: Id, { containerId }: ToastOptions) {\n const container = containers.get(containerId || latestInstance);\n if (!container) return null;\n\n return container.getToast(toastId);\n}\n\n/**\n * Generate a random toastId\n */\nfunction generateToastId() {\n return Math.random()\n .toString(36)\n .substring(2, 9);\n}\n\n/**\n * Generate a toastId or use the one provided\n */\nfunction getToastId(options?: ToastOptions) {\n if (options && (isStr(options.toastId) || isNum(options.toastId))) {\n return options.toastId;\n }\n\n return generateToastId();\n}\n\n/**\n * If the container is not mounted, the toast is enqueued and\n * the container lazy mounted\n */\nfunction dispatchToast(\n content: ToastContent,\n options: NotValidatedToastProps\n): Id {\n if (containers.size > 0) {\n eventManager.emit(Event.Show, content, options);\n } else {\n queue.push({ content, options });\n if (lazy && canUseDom) {\n lazy = false;\n containerDomNode = document.createElement('div');\n document.body.appendChild(containerDomNode);\n render(, containerDomNode);\n }\n }\n\n return options.toastId;\n}\n\n/**\n * Merge provided options with the defaults settings and generate the toastId\n */\nfunction mergeOptions(type: string, options?: ToastOptions) {\n return {\n ...options,\n type: (options && options.type) || type,\n toastId: getToastId(options)\n } as NotValidatedToastProps;\n}\n\nfunction createToastByType(type: string) {\n return (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(content, mergeOptions(type, options));\n}\n\nfunction toast(content: ToastContent, options?: ToastOptions) {\n return dispatchToast(content, mergeOptions(TYPE.DEFAULT, options));\n}\n\ntoast.loading = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(\n content,\n mergeOptions(TYPE.DEFAULT, {\n isLoading: true,\n autoClose: false,\n closeOnClick: false,\n closeButton: false,\n draggable: false,\n ...options\n })\n );\n\nexport interface ToastPromiseParams {\n pending?: string | UpdateOptions;\n success?: string | UpdateOptions;\n error?: string | UpdateOptions;\n}\n\nfunction handlePromise(\n promise: Promise | (() => Promise),\n { pending, error, success }: ToastPromiseParams,\n options?: ToastOptions\n) {\n let id: Id;\n\n if (pending) {\n id = isStr(pending)\n ? toast.loading(pending, options)\n : toast.loading(pending.render, {\n ...options,\n ...(pending as ToastOptions)\n });\n }\n\n const resetParams = {\n isLoading: null,\n autoClose: null,\n closeOnClick: null,\n closeButton: null,\n draggable: null\n };\n\n const resolver = (\n type: TypeOptions,\n input: string | UpdateOptions | undefined,\n result: T\n ) => {\n // Remove the toast if the input has not been provided. This prevents the toast from hanging\n // in the pending state if a success/error toast has not been provided.\n if (input == null) {\n toast.dismiss(id);\n return;\n }\n\n const baseParams = {\n type,\n ...resetParams,\n ...options,\n data: result\n };\n const params = isStr(input) ? { render: input } : input;\n\n // if the id is set we know that it's an update\n if (id) {\n toast.update(id, {\n ...baseParams,\n ...params\n });\n } else {\n // using toast.promise without loading\n toast(params.render, {\n ...baseParams,\n ...params\n } as ToastOptions);\n }\n\n return result;\n };\n\n const p = isFn(promise) ? promise() : promise;\n\n //call the resolvers only when needed\n p.then(result => resolver('success', success, result)).catch(err =>\n resolver('error', error, err)\n );\n\n return p;\n}\n\ntoast.promise = handlePromise;\ntoast.success = createToastByType(TYPE.SUCCESS);\ntoast.info = createToastByType(TYPE.INFO);\ntoast.error = createToastByType(TYPE.ERROR);\ntoast.warning = createToastByType(TYPE.WARNING);\ntoast.warn = toast.warning;\ntoast.dark = (content: ToastContent, options?: ToastOptions) =>\n dispatchToast(\n content,\n mergeOptions(TYPE.DEFAULT, {\n theme: 'dark',\n ...options\n })\n );\n\n/**\n * Remove toast programmaticaly\n */\ntoast.dismiss = (id?: Id) => eventManager.emit(Event.Clear, id);\n\n/**\n * Clear waiting queue when limit is used\n */\ntoast.clearWaitingQueue = (params: ClearWaitingQueueParams = {}) =>\n eventManager.emit(Event.ClearWaitingQueue, params);\n\n/**\n * return true if one container is displaying the toast\n */\ntoast.isActive = (id: Id) => {\n let isToastActive = false;\n\n containers.forEach(container => {\n if (container.isToastActive && container.isToastActive(id)) {\n isToastActive = true;\n }\n });\n\n return isToastActive;\n};\n\ntoast.update = (toastId: Id, options: UpdateOptions = {}) => {\n // if you call toast and toast.update directly nothing will be displayed\n // this is why I defered the update\n setTimeout(() => {\n const toast = getToast(toastId, options as ToastOptions);\n if (toast) {\n const { props: oldOptions, content: oldContent } = toast;\n\n const nextOptions = {\n ...oldOptions,\n ...options,\n toastId: options.toastId || toastId,\n updateId: generateToastId()\n } as ToastProps & UpdateOptions;\n\n if (nextOptions.toastId !== toastId) nextOptions.staleId = toastId;\n\n const content = nextOptions.render || oldContent;\n delete nextOptions.render;\n\n dispatchToast(content, nextOptions);\n }\n }, 0);\n};\n\n/**\n * Used for controlled progress bar.\n */\ntoast.done = (id: Id) => {\n toast.update(id, {\n progress: 1\n });\n};\n\n/**\n * @deprecated\n * API will change in the next major release\n *\n * Track changes. The callback get the number of toast displayed\n */\ntoast.onChange = (callback: OnChangeCallback) => {\n if (isFn(callback)) {\n eventManager.on(Event.Change, callback);\n }\n return () => {\n isFn(callback) && eventManager.off(Event.Change, callback);\n };\n};\n\n/**\n * @deprecated\n * will be removed in the next major release\n *\n * Configure the ToastContainer when lazy mounted\n * Prefer ToastContainer over this one\n */\ntoast.configure = (config: ToastContainerProps = {}) => {\n lazy = true;\n containerConfig = config;\n};\n\ntoast.POSITION = POSITION;\ntoast.TYPE = TYPE;\n\n/**\n * Wait until the ToastContainer is mounted to dispatch the toast\n * and attach isActive method\n */\neventManager\n .on(Event.DidMount, (containerInstance: ContainerInstance) => {\n latestInstance = containerInstance.containerId || containerInstance;\n containers.set(latestInstance, containerInstance);\n\n queue.forEach(item => {\n eventManager.emit(Event.Show, item.content, item.options);\n });\n\n queue = [];\n })\n .on(Event.WillUnmount, (containerInstance: ContainerInstance) => {\n containers.delete(containerInstance.containerId || containerInstance);\n\n if (containers.size === 0) {\n eventManager\n .off(Event.Show)\n .off(Event.Clear)\n .off(Event.ClearWaitingQueue);\n }\n\n if (canUseDom && containerDomNode) {\n document.body.removeChild(containerDomNode);\n }\n });\n\nexport { toast };\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","module.exports = require('./lib/axios');","/* eslint new-cap:0 */\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar defaultGetLogger = require('../vendor/loglevel').getLogger;\nvar constants = require('./constants');\nvar DEFAULT_LOG_LEVEL = constants.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = constants.DEFAULT_LOGGER_NAME;\nvar E = require('./constants').typeErrors;\nvar deprecationWarningsByComponentConstructor;\nfunction getDeprecationWarnings(componentConstructor) {\n deprecationWarningsByComponentConstructor = deprecationWarningsByComponentConstructor || new Map();\n if (deprecationWarningsByComponentConstructor.has(componentConstructor)) {\n return deprecationWarningsByComponentConstructor.get(componentConstructor);\n }\n var deprecationWarnings = new Set();\n deprecationWarningsByComponentConstructor.set(componentConstructor, deprecationWarnings);\n return deprecationWarnings;\n}\n/**\n * Selectively outputs messages to console based on specified minimum module\n * specific log levels.\n *\n * NOTE: The values in the logLevels object passed to the constructor is changed\n * by subsequent calls to {@link Log#setLevels}.\n */\nvar Log = /** @class */ (function () {\n /**\n * Construct a new {@link Log} object.\n * @param {String} moduleName - Name of the logging module (webrtc/media/signaling)\n * @param {object} component - Component owning this instance of {@link Log}\n * @param {LogLevels} logLevels - Logging levels. See {@link LogLevels}\n * @param {String} loggerName - Name of the logger instance. Used when calling getLogger from loglevel module\n * @param {Function} [getLogger] - optional method used internally.\n */\n function Log(moduleName, component, logLevels, loggerName, getLogger) {\n if (typeof moduleName !== 'string') {\n throw E.INVALID_TYPE('moduleName', 'string');\n }\n if (!component) {\n throw E.REQUIRED_ARGUMENT('component');\n }\n if (typeof logLevels !== 'object') {\n logLevels = {};\n }\n getLogger = getLogger || defaultGetLogger;\n validateLogLevels(logLevels);\n /* istanbul ignore next */\n Object.defineProperties(this, {\n _component: {\n value: component\n },\n _logLevels: {\n value: logLevels\n },\n _warnings: {\n value: new Set()\n },\n _loggerName: {\n get: function get() {\n var name = loggerName && typeof loggerName === 'string' ? loggerName : DEFAULT_LOGGER_NAME;\n if (!this._logLevelsEqual) {\n name = name + \"-\" + moduleName;\n }\n return name;\n }\n },\n _logger: {\n get: function get() {\n var logger = getLogger(this._loggerName);\n var level = this._logLevels[moduleName] || DEFAULT_LOG_LEVEL;\n // There is no 'off' in the logger module. It uses 'silent' instead\n level = level === 'off' ? 'silent' : level;\n logger.setDefaultLevel(level);\n return logger;\n }\n },\n _logLevelsEqual: {\n get: function get() {\n // True if all levels are the same\n return (new Set(Object.values(this._logLevels)).size) === 1;\n }\n },\n logLevel: {\n get: function get() {\n return Log.getLevelByName(logLevels[moduleName] || DEFAULT_LOG_LEVEL);\n }\n },\n name: { get: component.toString.bind(component) }\n });\n }\n /**\n * Get the log level (number) by its name (string)\n * @param {String} name - Name of the log level\n * @returns {Number} Requested log level\n * @throws {TwilioError} INVALID_LOG_LEVEL (32056)\n * @public\n */\n Log.getLevelByName = function (name) {\n if (!isNaN(name)) {\n return parseInt(name, 10);\n }\n name = name.toUpperCase();\n validateLogLevel(name);\n return Log[name];\n };\n /**\n * Create a child {@link Log} instance with this._logLevels\n * @param moduleName - Name of the logging module\n * @param component - Component owning this instance of {@link Log}\n * @returns {Log} this\n */\n Log.prototype.createLog = function (moduleName, component) {\n var name = this._loggerName;\n // Grab the original logger name\n if (!this._logLevelsEqual) {\n name = name.substring(0, name.lastIndexOf('-'));\n }\n return new Log(moduleName, component, this._logLevels, name);\n };\n /**\n * Set new log levels.\n * This changes the levels for all its ancestors,\n * siblings, and children and descendants instances of {@link Log}.\n * @param {LogLevels} levels - New log levels\n * @throws {TwilioError} INVALID_ARGUMENT\n * @returns {Log} this\n */\n Log.prototype.setLevels = function (levels) {\n validateLogLevels(levels);\n Object.assign(this._logLevels, levels);\n return this;\n };\n /**\n * Log a message using the logger method appropriate for the specified logLevel\n * @param {Number} logLevel - Log level of the message being logged\n * @param {Array} messages - Message(s) to log\n * @returns {Log} This instance of {@link Log}\n * @public\n */\n Log.prototype.log = function (logLevel, messages) {\n var name = Log._levels[logLevel];\n // eslint-disable-next-line no-use-before-define\n if (!name) {\n throw E.INVALID_VALUE('logLevel', LOG_LEVEL_VALUES);\n }\n name = name.toLowerCase();\n var prefix = [new Date().toISOString(), name, this.name];\n (this._logger[name] || function noop() { }).apply(void 0, __spreadArray([], __read(prefix.concat(messages))));\n return this;\n };\n /**\n * Log a debug message\n * @param {...String} messages - Message(s) to pass to the logger\n * @returns {Log} This instance of {@link Log}\n * @public\n */\n Log.prototype.debug = function () {\n return this.log(Log.DEBUG, [].slice.call(arguments));\n };\n /**\n * Log a deprecation warning. Deprecation warnings are logged as warnings and\n * they are only ever logged once.\n * @param {String} deprecationWarning - The deprecation warning\n * @returns {Log} This instance of {@link Log}\n * @public\n */\n Log.prototype.deprecated = function (deprecationWarning) {\n var deprecationWarnings = getDeprecationWarnings(this._component.constructor);\n if (deprecationWarnings.has(deprecationWarning)) {\n return this;\n }\n deprecationWarnings.add(deprecationWarning);\n return this.warn(deprecationWarning);\n };\n /**\n * Log an info message\n * @param {...String} messages - Message(s) to pass to the logger\n * @returns {Log} This instance of {@link Log}\n * @public\n */\n Log.prototype.info = function () {\n return this.log(Log.INFO, [].slice.call(arguments));\n };\n /**\n * Log a warn message\n * @param {...String} messages - Message(s) to pass to the logger\n * @returns {Log} This instance of {@link Log}\n * @public\n */\n Log.prototype.warn = function () {\n return this.log(Log.WARN, [].slice.call(arguments));\n };\n /**\n * Log a warning once.\n * @param {String} warning\n * @returns {Log} This instance of {@link Log}\n * @public\n */\n Log.prototype.warnOnce = function (warning) {\n if (this._warnings.has(warning)) {\n return this;\n }\n this._warnings.add(warning);\n return this.warn(warning);\n };\n /**\n * Log an error message\n * @param {...String} messages - Message(s) to pass to the logger\n * @returns {Log} This instance of {@link Log}\n * @public\n */\n Log.prototype.error = function () {\n return this.log(Log.ERROR, [].slice.call(arguments));\n };\n /**\n * Log an error message and throw an exception\n * @param {TwilioError} error - Error to throw\n * @param {String} customMessage - Custom message for the error\n * @public\n */\n Log.prototype.throw = function (error, customMessage) {\n if (error.clone) {\n error = error.clone(customMessage);\n }\n this.log(Log.ERROR, error);\n throw error;\n };\n return Log;\n}());\n// Singleton Constants\n/* eslint key-spacing:0 */\n/* istanbul ignore next */\nObject.defineProperties(Log, {\n DEBUG: { value: 0 },\n INFO: { value: 1 },\n WARN: { value: 2 },\n ERROR: { value: 3 },\n OFF: { value: 4 },\n _levels: {\n value: [\n 'DEBUG',\n 'INFO',\n 'WARN',\n 'ERROR',\n 'OFF',\n ]\n }\n});\nvar LOG_LEVELS_SET = {};\nvar LOG_LEVEL_VALUES = [];\nvar LOG_LEVEL_NAMES = Log._levels.map(function (level, i) {\n LOG_LEVELS_SET[level] = true;\n LOG_LEVEL_VALUES.push(i);\n return level;\n});\nfunction validateLogLevel(level) {\n if (!(level in LOG_LEVELS_SET)) {\n throw E.INVALID_VALUE('level', LOG_LEVEL_NAMES);\n }\n}\nfunction validateLogLevels(levels) {\n Object.keys(levels).forEach(function (moduleName) {\n validateLogLevel(levels[moduleName].toUpperCase());\n });\n}\nmodule.exports = Log;\n//# sourceMappingURL=log.js.map","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","// NOTE: Do not edit this file. This code is auto-generated. Contact the\n// Twilio SDK Team for more information.\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TwilioError = require('./twilioerror');\nvar TwilioErrorByCode = {};\n/**\n * Create a {@link TwilioError} for a given code and message.\n * @private\n * @param {number} [code] - Error code\n * @param {string} [message] - Error message\n * @returns {TwilioError}\n */\nexports.createTwilioError = function createTwilioError(code, message) {\n code = typeof code === 'number' ? code : 0;\n message = typeof message === 'string' && message ? message : 'Unknown error';\n return TwilioErrorByCode[code] ? new TwilioErrorByCode[code]() : new TwilioError(code, message);\n};\n/**\n * @class AccessTokenInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room is invalid.\n * @extends TwilioError\n * @property {number} code - 20101\n * @property {string} message - 'Invalid Access Token'\n */\nvar AccessTokenInvalidError = /** @class */ (function (_super) {\n __extends(AccessTokenInvalidError, _super);\n function AccessTokenInvalidError() {\n var _this = _super.call(this, 20101, 'Invalid Access Token') || this;\n Object.setPrototypeOf(_this, AccessTokenInvalidError.prototype);\n return _this;\n }\n return AccessTokenInvalidError;\n}(TwilioError));\nexports.AccessTokenInvalidError = AccessTokenInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20101, { value: AccessTokenInvalidError });\n/**\n * @class AccessTokenHeaderInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has an invalid header.\n * @extends TwilioError\n * @property {number} code - 20102\n * @property {string} message - 'Invalid Access Token header'\n */\nvar AccessTokenHeaderInvalidError = /** @class */ (function (_super) {\n __extends(AccessTokenHeaderInvalidError, _super);\n function AccessTokenHeaderInvalidError() {\n var _this = _super.call(this, 20102, 'Invalid Access Token header') || this;\n Object.setPrototypeOf(_this, AccessTokenHeaderInvalidError.prototype);\n return _this;\n }\n return AccessTokenHeaderInvalidError;\n}(TwilioError));\nexports.AccessTokenHeaderInvalidError = AccessTokenHeaderInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20102, { value: AccessTokenHeaderInvalidError });\n/**\n * @class AccessTokenIssuerInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room contains an invalid issuer or subject.\n * @extends TwilioError\n * @property {number} code - 20103\n * @property {string} message - 'Invalid Access Token issuer/subject'\n */\nvar AccessTokenIssuerInvalidError = /** @class */ (function (_super) {\n __extends(AccessTokenIssuerInvalidError, _super);\n function AccessTokenIssuerInvalidError() {\n var _this = _super.call(this, 20103, 'Invalid Access Token issuer/subject') || this;\n Object.setPrototypeOf(_this, AccessTokenIssuerInvalidError.prototype);\n return _this;\n }\n return AccessTokenIssuerInvalidError;\n}(TwilioError));\nexports.AccessTokenIssuerInvalidError = AccessTokenIssuerInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20103, { value: AccessTokenIssuerInvalidError });\n/**\n * @class AccessTokenExpiredError\n * @classdesc Raised whenever the AccessToken used for connecting, or reconnecting to a Room has expired.\n * @extends TwilioError\n * @property {number} code - 20104\n * @property {string} message - 'Access Token expired or expiration date invalid'\n */\nvar AccessTokenExpiredError = /** @class */ (function (_super) {\n __extends(AccessTokenExpiredError, _super);\n function AccessTokenExpiredError() {\n var _this = _super.call(this, 20104, 'Access Token expired or expiration date invalid') || this;\n Object.setPrototypeOf(_this, AccessTokenExpiredError.prototype);\n return _this;\n }\n return AccessTokenExpiredError;\n}(TwilioError));\nexports.AccessTokenExpiredError = AccessTokenExpiredError;\nObject.defineProperty(TwilioErrorByCode, 20104, { value: AccessTokenExpiredError });\n/**\n * @class AccessTokenNotYetValidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room is not yet valid.\n * @extends TwilioError\n * @property {number} code - 20105\n * @property {string} message - 'Access Token not yet valid'\n */\nvar AccessTokenNotYetValidError = /** @class */ (function (_super) {\n __extends(AccessTokenNotYetValidError, _super);\n function AccessTokenNotYetValidError() {\n var _this = _super.call(this, 20105, 'Access Token not yet valid') || this;\n Object.setPrototypeOf(_this, AccessTokenNotYetValidError.prototype);\n return _this;\n }\n return AccessTokenNotYetValidError;\n}(TwilioError));\nexports.AccessTokenNotYetValidError = AccessTokenNotYetValidError;\nObject.defineProperty(TwilioErrorByCode, 20105, { value: AccessTokenNotYetValidError });\n/**\n * @class AccessTokenGrantsInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has invalid grants.\n * @extends TwilioError\n * @property {number} code - 20106\n * @property {string} message - 'Invalid Access Token grants'\n */\nvar AccessTokenGrantsInvalidError = /** @class */ (function (_super) {\n __extends(AccessTokenGrantsInvalidError, _super);\n function AccessTokenGrantsInvalidError() {\n var _this = _super.call(this, 20106, 'Invalid Access Token grants') || this;\n Object.setPrototypeOf(_this, AccessTokenGrantsInvalidError.prototype);\n return _this;\n }\n return AccessTokenGrantsInvalidError;\n}(TwilioError));\nexports.AccessTokenGrantsInvalidError = AccessTokenGrantsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20106, { value: AccessTokenGrantsInvalidError });\n/**\n * @class AccessTokenSignatureInvalidError\n * @classdesc Raised whenever the AccessToken used for connecting to a Room has an invalid signature.\n * @extends TwilioError\n * @property {number} code - 20107\n * @property {string} message - 'Invalid Access Token signature'\n */\nvar AccessTokenSignatureInvalidError = /** @class */ (function (_super) {\n __extends(AccessTokenSignatureInvalidError, _super);\n function AccessTokenSignatureInvalidError() {\n var _this = _super.call(this, 20107, 'Invalid Access Token signature') || this;\n Object.setPrototypeOf(_this, AccessTokenSignatureInvalidError.prototype);\n return _this;\n }\n return AccessTokenSignatureInvalidError;\n}(TwilioError));\nexports.AccessTokenSignatureInvalidError = AccessTokenSignatureInvalidError;\nObject.defineProperty(TwilioErrorByCode, 20107, { value: AccessTokenSignatureInvalidError });\n/**\n * @class SignalingConnectionError\n * @classdesc Raised whenever a signaling connection error occurs that is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53000\n * @property {string} message - 'Signaling connection error'\n */\nvar SignalingConnectionError = /** @class */ (function (_super) {\n __extends(SignalingConnectionError, _super);\n function SignalingConnectionError() {\n var _this = _super.call(this, 53000, 'Signaling connection error') || this;\n Object.setPrototypeOf(_this, SignalingConnectionError.prototype);\n return _this;\n }\n return SignalingConnectionError;\n}(TwilioError));\nexports.SignalingConnectionError = SignalingConnectionError;\nObject.defineProperty(TwilioErrorByCode, 53000, { value: SignalingConnectionError });\n/**\n * @class SignalingConnectionDisconnectedError\n * @classdesc Raised whenever the signaling connection is unexpectedly disconnected.\n * @extends TwilioError\n * @property {number} code - 53001\n * @property {string} message - 'Signaling connection disconnected'\n */\nvar SignalingConnectionDisconnectedError = /** @class */ (function (_super) {\n __extends(SignalingConnectionDisconnectedError, _super);\n function SignalingConnectionDisconnectedError() {\n var _this = _super.call(this, 53001, 'Signaling connection disconnected') || this;\n Object.setPrototypeOf(_this, SignalingConnectionDisconnectedError.prototype);\n return _this;\n }\n return SignalingConnectionDisconnectedError;\n}(TwilioError));\nexports.SignalingConnectionDisconnectedError = SignalingConnectionDisconnectedError;\nObject.defineProperty(TwilioErrorByCode, 53001, { value: SignalingConnectionDisconnectedError });\n/**\n * @class SignalingConnectionTimeoutError\n * @classdesc Raised when connection liveliness checks fail, or when the signaling session expires.\n * @extends TwilioError\n * @property {number} code - 53002\n * @property {string} message - 'Signaling connection timed out'\n */\nvar SignalingConnectionTimeoutError = /** @class */ (function (_super) {\n __extends(SignalingConnectionTimeoutError, _super);\n function SignalingConnectionTimeoutError() {\n var _this = _super.call(this, 53002, 'Signaling connection timed out') || this;\n Object.setPrototypeOf(_this, SignalingConnectionTimeoutError.prototype);\n return _this;\n }\n return SignalingConnectionTimeoutError;\n}(TwilioError));\nexports.SignalingConnectionTimeoutError = SignalingConnectionTimeoutError;\nObject.defineProperty(TwilioErrorByCode, 53002, { value: SignalingConnectionTimeoutError });\n/**\n * @class SignalingIncomingMessageInvalidError\n * @classdesc Raised whenever the Client receives a message from the Server that the Client cannot handle.\n * @extends TwilioError\n * @property {number} code - 53003\n * @property {string} message - 'Client received an invalid signaling message'\n */\nvar SignalingIncomingMessageInvalidError = /** @class */ (function (_super) {\n __extends(SignalingIncomingMessageInvalidError, _super);\n function SignalingIncomingMessageInvalidError() {\n var _this = _super.call(this, 53003, 'Client received an invalid signaling message') || this;\n Object.setPrototypeOf(_this, SignalingIncomingMessageInvalidError.prototype);\n return _this;\n }\n return SignalingIncomingMessageInvalidError;\n}(TwilioError));\nexports.SignalingIncomingMessageInvalidError = SignalingIncomingMessageInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53003, { value: SignalingIncomingMessageInvalidError });\n/**\n * @class SignalingOutgoingMessageInvalidError\n * @classdesc Raised whenever the Client sends a message to the Server that the Server cannot handle.\n * @extends TwilioError\n * @property {number} code - 53004\n * @property {string} message - 'Client sent an invalid signaling message'\n */\nvar SignalingOutgoingMessageInvalidError = /** @class */ (function (_super) {\n __extends(SignalingOutgoingMessageInvalidError, _super);\n function SignalingOutgoingMessageInvalidError() {\n var _this = _super.call(this, 53004, 'Client sent an invalid signaling message') || this;\n Object.setPrototypeOf(_this, SignalingOutgoingMessageInvalidError.prototype);\n return _this;\n }\n return SignalingOutgoingMessageInvalidError;\n}(TwilioError));\nexports.SignalingOutgoingMessageInvalidError = SignalingOutgoingMessageInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53004, { value: SignalingOutgoingMessageInvalidError });\n/**\n * @class SignalingServerBusyError\n * @classdesc Raised when the server is too busy to accept new clients.\n * @extends TwilioError\n * @property {number} code - 53006\n * @property {string} message - 'Video server is busy'\n */\nvar SignalingServerBusyError = /** @class */ (function (_super) {\n __extends(SignalingServerBusyError, _super);\n function SignalingServerBusyError() {\n var _this = _super.call(this, 53006, 'Video server is busy') || this;\n Object.setPrototypeOf(_this, SignalingServerBusyError.prototype);\n return _this;\n }\n return SignalingServerBusyError;\n}(TwilioError));\nexports.SignalingServerBusyError = SignalingServerBusyError;\nObject.defineProperty(TwilioErrorByCode, 53006, { value: SignalingServerBusyError });\n/**\n * @class RoomNameInvalidError\n * @classdesc Raised whenever a Room name is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53100\n * @property {string} message - 'Room name is invalid'\n */\nvar RoomNameInvalidError = /** @class */ (function (_super) {\n __extends(RoomNameInvalidError, _super);\n function RoomNameInvalidError() {\n var _this = _super.call(this, 53100, 'Room name is invalid') || this;\n Object.setPrototypeOf(_this, RoomNameInvalidError.prototype);\n return _this;\n }\n return RoomNameInvalidError;\n}(TwilioError));\nexports.RoomNameInvalidError = RoomNameInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53100, { value: RoomNameInvalidError });\n/**\n * @class RoomNameTooLongError\n * @classdesc Raised whenever a Room name is too long.\n * @extends TwilioError\n * @property {number} code - 53101\n * @property {string} message - 'Room name is too long'\n */\nvar RoomNameTooLongError = /** @class */ (function (_super) {\n __extends(RoomNameTooLongError, _super);\n function RoomNameTooLongError() {\n var _this = _super.call(this, 53101, 'Room name is too long') || this;\n Object.setPrototypeOf(_this, RoomNameTooLongError.prototype);\n return _this;\n }\n return RoomNameTooLongError;\n}(TwilioError));\nexports.RoomNameTooLongError = RoomNameTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53101, { value: RoomNameTooLongError });\n/**\n * @class RoomNameCharsInvalidError\n * @classdesc Raised whenever a Room name contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53102\n * @property {string} message - 'Room name contains invalid characters'\n */\nvar RoomNameCharsInvalidError = /** @class */ (function (_super) {\n __extends(RoomNameCharsInvalidError, _super);\n function RoomNameCharsInvalidError() {\n var _this = _super.call(this, 53102, 'Room name contains invalid characters') || this;\n Object.setPrototypeOf(_this, RoomNameCharsInvalidError.prototype);\n return _this;\n }\n return RoomNameCharsInvalidError;\n}(TwilioError));\nexports.RoomNameCharsInvalidError = RoomNameCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53102, { value: RoomNameCharsInvalidError });\n/**\n * @class RoomCreateFailedError\n * @classdesc Raised whenever the Server is unable to create a Room.\n * @extends TwilioError\n * @property {number} code - 53103\n * @property {string} message - 'Unable to create Room'\n */\nvar RoomCreateFailedError = /** @class */ (function (_super) {\n __extends(RoomCreateFailedError, _super);\n function RoomCreateFailedError() {\n var _this = _super.call(this, 53103, 'Unable to create Room') || this;\n Object.setPrototypeOf(_this, RoomCreateFailedError.prototype);\n return _this;\n }\n return RoomCreateFailedError;\n}(TwilioError));\nexports.RoomCreateFailedError = RoomCreateFailedError;\nObject.defineProperty(TwilioErrorByCode, 53103, { value: RoomCreateFailedError });\n/**\n * @class RoomConnectFailedError\n * @classdesc Raised whenever a Client is unable to connect to a Room, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53104\n * @property {string} message - 'Unable to connect to Room'\n */\nvar RoomConnectFailedError = /** @class */ (function (_super) {\n __extends(RoomConnectFailedError, _super);\n function RoomConnectFailedError() {\n var _this = _super.call(this, 53104, 'Unable to connect to Room') || this;\n Object.setPrototypeOf(_this, RoomConnectFailedError.prototype);\n return _this;\n }\n return RoomConnectFailedError;\n}(TwilioError));\nexports.RoomConnectFailedError = RoomConnectFailedError;\nObject.defineProperty(TwilioErrorByCode, 53104, { value: RoomConnectFailedError });\n/**\n * @class RoomMaxParticipantsExceededError\n * @classdesc Raised whenever a Client is unable to connect to a Room because the Room contains too many Participants.\n * @extends TwilioError\n * @property {number} code - 53105\n * @property {string} message - 'Room contains too many Participants'\n */\nvar RoomMaxParticipantsExceededError = /** @class */ (function (_super) {\n __extends(RoomMaxParticipantsExceededError, _super);\n function RoomMaxParticipantsExceededError() {\n var _this = _super.call(this, 53105, 'Room contains too many Participants') || this;\n Object.setPrototypeOf(_this, RoomMaxParticipantsExceededError.prototype);\n return _this;\n }\n return RoomMaxParticipantsExceededError;\n}(TwilioError));\nexports.RoomMaxParticipantsExceededError = RoomMaxParticipantsExceededError;\nObject.defineProperty(TwilioErrorByCode, 53105, { value: RoomMaxParticipantsExceededError });\n/**\n * @class RoomNotFoundError\n * @classdesc Raised whenever attempting operation on a non-existent Room.\n * @extends TwilioError\n * @property {number} code - 53106\n * @property {string} message - 'Room not found'\n */\nvar RoomNotFoundError = /** @class */ (function (_super) {\n __extends(RoomNotFoundError, _super);\n function RoomNotFoundError() {\n var _this = _super.call(this, 53106, 'Room not found') || this;\n Object.setPrototypeOf(_this, RoomNotFoundError.prototype);\n return _this;\n }\n return RoomNotFoundError;\n}(TwilioError));\nexports.RoomNotFoundError = RoomNotFoundError;\nObject.defineProperty(TwilioErrorByCode, 53106, { value: RoomNotFoundError });\n/**\n * @class RoomMaxParticipantsOutOfRangeError\n * @classdesc Raised in the REST API when MaxParticipants is set out of range.\n * @extends TwilioError\n * @property {number} code - 53107\n * @property {string} message - 'MaxParticipants is out of range'\n */\nvar RoomMaxParticipantsOutOfRangeError = /** @class */ (function (_super) {\n __extends(RoomMaxParticipantsOutOfRangeError, _super);\n function RoomMaxParticipantsOutOfRangeError() {\n var _this = _super.call(this, 53107, 'MaxParticipants is out of range') || this;\n Object.setPrototypeOf(_this, RoomMaxParticipantsOutOfRangeError.prototype);\n return _this;\n }\n return RoomMaxParticipantsOutOfRangeError;\n}(TwilioError));\nexports.RoomMaxParticipantsOutOfRangeError = RoomMaxParticipantsOutOfRangeError;\nObject.defineProperty(TwilioErrorByCode, 53107, { value: RoomMaxParticipantsOutOfRangeError });\n/**\n * @class RoomTypeInvalidError\n * @classdesc Raised in the REST API when the user attempts to create a Room with an invalid RoomType\n * @extends TwilioError\n * @property {number} code - 53108\n * @property {string} message - 'RoomType is not valid'\n */\nvar RoomTypeInvalidError = /** @class */ (function (_super) {\n __extends(RoomTypeInvalidError, _super);\n function RoomTypeInvalidError() {\n var _this = _super.call(this, 53108, 'RoomType is not valid') || this;\n Object.setPrototypeOf(_this, RoomTypeInvalidError.prototype);\n return _this;\n }\n return RoomTypeInvalidError;\n}(TwilioError));\nexports.RoomTypeInvalidError = RoomTypeInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53108, { value: RoomTypeInvalidError });\n/**\n * @class RoomTimeoutOutOfRangeError\n * @classdesc Raised in the REST API when Timeout is set out of range.\n * @extends TwilioError\n * @property {number} code - 53109\n * @property {string} message - 'Timeout is out of range'\n */\nvar RoomTimeoutOutOfRangeError = /** @class */ (function (_super) {\n __extends(RoomTimeoutOutOfRangeError, _super);\n function RoomTimeoutOutOfRangeError() {\n var _this = _super.call(this, 53109, 'Timeout is out of range') || this;\n Object.setPrototypeOf(_this, RoomTimeoutOutOfRangeError.prototype);\n return _this;\n }\n return RoomTimeoutOutOfRangeError;\n}(TwilioError));\nexports.RoomTimeoutOutOfRangeError = RoomTimeoutOutOfRangeError;\nObject.defineProperty(TwilioErrorByCode, 53109, { value: RoomTimeoutOutOfRangeError });\n/**\n * @class RoomStatusCallbackMethodInvalidError\n * @classdesc Raised in the REST API when StatusCallbackMethod is set to an invalid value.\n * @extends TwilioError\n * @property {number} code - 53110\n * @property {string} message - 'StatusCallbackMethod is invalid'\n */\nvar RoomStatusCallbackMethodInvalidError = /** @class */ (function (_super) {\n __extends(RoomStatusCallbackMethodInvalidError, _super);\n function RoomStatusCallbackMethodInvalidError() {\n var _this = _super.call(this, 53110, 'StatusCallbackMethod is invalid') || this;\n Object.setPrototypeOf(_this, RoomStatusCallbackMethodInvalidError.prototype);\n return _this;\n }\n return RoomStatusCallbackMethodInvalidError;\n}(TwilioError));\nexports.RoomStatusCallbackMethodInvalidError = RoomStatusCallbackMethodInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53110, { value: RoomStatusCallbackMethodInvalidError });\n/**\n * @class RoomStatusCallbackInvalidError\n * @classdesc Raised in the REST API when StatusCallback is not a valid URL or the url is too long.\n * @extends TwilioError\n * @property {number} code - 53111\n * @property {string} message - 'StatusCallback is invalid'\n */\nvar RoomStatusCallbackInvalidError = /** @class */ (function (_super) {\n __extends(RoomStatusCallbackInvalidError, _super);\n function RoomStatusCallbackInvalidError() {\n var _this = _super.call(this, 53111, 'StatusCallback is invalid') || this;\n Object.setPrototypeOf(_this, RoomStatusCallbackInvalidError.prototype);\n return _this;\n }\n return RoomStatusCallbackInvalidError;\n}(TwilioError));\nexports.RoomStatusCallbackInvalidError = RoomStatusCallbackInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53111, { value: RoomStatusCallbackInvalidError });\n/**\n * @class RoomStatusInvalidError\n * @classdesc Raised in the REST API when Status is not valid or the Room is not in-progress.\n * @extends TwilioError\n * @property {number} code - 53112\n * @property {string} message - 'Status is invalid'\n */\nvar RoomStatusInvalidError = /** @class */ (function (_super) {\n __extends(RoomStatusInvalidError, _super);\n function RoomStatusInvalidError() {\n var _this = _super.call(this, 53112, 'Status is invalid') || this;\n Object.setPrototypeOf(_this, RoomStatusInvalidError.prototype);\n return _this;\n }\n return RoomStatusInvalidError;\n}(TwilioError));\nexports.RoomStatusInvalidError = RoomStatusInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53112, { value: RoomStatusInvalidError });\n/**\n * @class RoomRoomExistsError\n * @classdesc Raised in the REST API when the Room creation fails because a Room exists with the same name.\n * @extends TwilioError\n * @property {number} code - 53113\n * @property {string} message - 'Room exists'\n */\nvar RoomRoomExistsError = /** @class */ (function (_super) {\n __extends(RoomRoomExistsError, _super);\n function RoomRoomExistsError() {\n var _this = _super.call(this, 53113, 'Room exists') || this;\n Object.setPrototypeOf(_this, RoomRoomExistsError.prototype);\n return _this;\n }\n return RoomRoomExistsError;\n}(TwilioError));\nexports.RoomRoomExistsError = RoomRoomExistsError;\nObject.defineProperty(TwilioErrorByCode, 53113, { value: RoomRoomExistsError });\n/**\n * @class RoomInvalidParametersError\n * @classdesc Raised in the REST API when one or more Room creation parameter is incompatible with the Room type.\n * @extends TwilioError\n * @property {number} code - 53114\n * @property {string} message - 'Room creation parameter(s) incompatible with the Room type'\n */\nvar RoomInvalidParametersError = /** @class */ (function (_super) {\n __extends(RoomInvalidParametersError, _super);\n function RoomInvalidParametersError() {\n var _this = _super.call(this, 53114, 'Room creation parameter(s) incompatible with the Room type') || this;\n Object.setPrototypeOf(_this, RoomInvalidParametersError.prototype);\n return _this;\n }\n return RoomInvalidParametersError;\n}(TwilioError));\nexports.RoomInvalidParametersError = RoomInvalidParametersError;\nObject.defineProperty(TwilioErrorByCode, 53114, { value: RoomInvalidParametersError });\n/**\n * @class RoomMediaRegionInvalidError\n * @classdesc Raised in the REST API when MediaRegion is set to an invalid value.\n * @extends TwilioError\n * @property {number} code - 53115\n * @property {string} message - 'MediaRegion is invalid'\n */\nvar RoomMediaRegionInvalidError = /** @class */ (function (_super) {\n __extends(RoomMediaRegionInvalidError, _super);\n function RoomMediaRegionInvalidError() {\n var _this = _super.call(this, 53115, 'MediaRegion is invalid') || this;\n Object.setPrototypeOf(_this, RoomMediaRegionInvalidError.prototype);\n return _this;\n }\n return RoomMediaRegionInvalidError;\n}(TwilioError));\nexports.RoomMediaRegionInvalidError = RoomMediaRegionInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53115, { value: RoomMediaRegionInvalidError });\n/**\n * @class RoomMediaRegionUnavailableError\n * @classdesc Raised in the REST API when MediaRegion is set to a valid value but no media servers are available.\n * @extends TwilioError\n * @property {number} code - 53116\n * @property {string} message - 'There are no media servers available in the MediaRegion'\n */\nvar RoomMediaRegionUnavailableError = /** @class */ (function (_super) {\n __extends(RoomMediaRegionUnavailableError, _super);\n function RoomMediaRegionUnavailableError() {\n var _this = _super.call(this, 53116, 'There are no media servers available in the MediaRegion') || this;\n Object.setPrototypeOf(_this, RoomMediaRegionUnavailableError.prototype);\n return _this;\n }\n return RoomMediaRegionUnavailableError;\n}(TwilioError));\nexports.RoomMediaRegionUnavailableError = RoomMediaRegionUnavailableError;\nObject.defineProperty(TwilioErrorByCode, 53116, { value: RoomMediaRegionUnavailableError });\n/**\n * @class RoomSubscriptionOperationNotSupportedError\n * @classdesc Raised whenever the subscription operation requested is not supported for the Room type.\n * @extends TwilioError\n * @property {number} code - 53117\n * @property {string} message - 'The subscription operation requested is not supported for the Room type'\n */\nvar RoomSubscriptionOperationNotSupportedError = /** @class */ (function (_super) {\n __extends(RoomSubscriptionOperationNotSupportedError, _super);\n function RoomSubscriptionOperationNotSupportedError() {\n var _this = _super.call(this, 53117, 'The subscription operation requested is not supported for the Room type') || this;\n Object.setPrototypeOf(_this, RoomSubscriptionOperationNotSupportedError.prototype);\n return _this;\n }\n return RoomSubscriptionOperationNotSupportedError;\n}(TwilioError));\nexports.RoomSubscriptionOperationNotSupportedError = RoomSubscriptionOperationNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53117, { value: RoomSubscriptionOperationNotSupportedError });\n/**\n * @class RoomCompletedError\n * @classdesc Raised whenever a Room is completed via the REST API.\n * @extends TwilioError\n * @property {number} code - 53118\n * @property {string} message - 'Room completed'\n */\nvar RoomCompletedError = /** @class */ (function (_super) {\n __extends(RoomCompletedError, _super);\n function RoomCompletedError() {\n var _this = _super.call(this, 53118, 'Room completed') || this;\n Object.setPrototypeOf(_this, RoomCompletedError.prototype);\n return _this;\n }\n return RoomCompletedError;\n}(TwilioError));\nexports.RoomCompletedError = RoomCompletedError;\nObject.defineProperty(TwilioErrorByCode, 53118, { value: RoomCompletedError });\n/**\n * @class RoomAudioOnlyFlagNotSupportedError\n * @classdesc Raised whenever a participant tries to set the AudioOnly flag for a Room type other than Group Rooms.\n * @extends TwilioError\n * @property {number} code - 53124\n * @property {string} message - 'The AudioOnly flag is not supported for the Room type'\n */\nvar RoomAudioOnlyFlagNotSupportedError = /** @class */ (function (_super) {\n __extends(RoomAudioOnlyFlagNotSupportedError, _super);\n function RoomAudioOnlyFlagNotSupportedError() {\n var _this = _super.call(this, 53124, 'The AudioOnly flag is not supported for the Room type') || this;\n Object.setPrototypeOf(_this, RoomAudioOnlyFlagNotSupportedError.prototype);\n return _this;\n }\n return RoomAudioOnlyFlagNotSupportedError;\n}(TwilioError));\nexports.RoomAudioOnlyFlagNotSupportedError = RoomAudioOnlyFlagNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53124, { value: RoomAudioOnlyFlagNotSupportedError });\n/**\n * @class RoomTrackKindNotSupportedError\n * @classdesc Raised whenever a participant tries to publish a track or connects with a track that is not supported by the group room.\n * @extends TwilioError\n * @property {number} code - 53125\n * @property {string} message - 'The track kind is not supported by the Room'\n */\nvar RoomTrackKindNotSupportedError = /** @class */ (function (_super) {\n __extends(RoomTrackKindNotSupportedError, _super);\n function RoomTrackKindNotSupportedError() {\n var _this = _super.call(this, 53125, 'The track kind is not supported by the Room') || this;\n Object.setPrototypeOf(_this, RoomTrackKindNotSupportedError.prototype);\n return _this;\n }\n return RoomTrackKindNotSupportedError;\n}(TwilioError));\nexports.RoomTrackKindNotSupportedError = RoomTrackKindNotSupportedError;\nObject.defineProperty(TwilioErrorByCode, 53125, { value: RoomTrackKindNotSupportedError });\n/**\n * @class ParticipantIdentityInvalidError\n * @classdesc Raised whenever a Participant identity is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53200\n * @property {string} message - 'Participant identity is invalid'\n */\nvar ParticipantIdentityInvalidError = /** @class */ (function (_super) {\n __extends(ParticipantIdentityInvalidError, _super);\n function ParticipantIdentityInvalidError() {\n var _this = _super.call(this, 53200, 'Participant identity is invalid') || this;\n Object.setPrototypeOf(_this, ParticipantIdentityInvalidError.prototype);\n return _this;\n }\n return ParticipantIdentityInvalidError;\n}(TwilioError));\nexports.ParticipantIdentityInvalidError = ParticipantIdentityInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53200, { value: ParticipantIdentityInvalidError });\n/**\n * @class ParticipantIdentityTooLongError\n * @classdesc Raised whenever a Participant identity is too long.\n * @extends TwilioError\n * @property {number} code - 53201\n * @property {string} message - 'Participant identity is too long'\n */\nvar ParticipantIdentityTooLongError = /** @class */ (function (_super) {\n __extends(ParticipantIdentityTooLongError, _super);\n function ParticipantIdentityTooLongError() {\n var _this = _super.call(this, 53201, 'Participant identity is too long') || this;\n Object.setPrototypeOf(_this, ParticipantIdentityTooLongError.prototype);\n return _this;\n }\n return ParticipantIdentityTooLongError;\n}(TwilioError));\nexports.ParticipantIdentityTooLongError = ParticipantIdentityTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53201, { value: ParticipantIdentityTooLongError });\n/**\n * @class ParticipantIdentityCharsInvalidError\n * @classdesc Raised whenever a Participant identity contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53202\n * @property {string} message - 'Participant identity contains invalid characters'\n */\nvar ParticipantIdentityCharsInvalidError = /** @class */ (function (_super) {\n __extends(ParticipantIdentityCharsInvalidError, _super);\n function ParticipantIdentityCharsInvalidError() {\n var _this = _super.call(this, 53202, 'Participant identity contains invalid characters') || this;\n Object.setPrototypeOf(_this, ParticipantIdentityCharsInvalidError.prototype);\n return _this;\n }\n return ParticipantIdentityCharsInvalidError;\n}(TwilioError));\nexports.ParticipantIdentityCharsInvalidError = ParticipantIdentityCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53202, { value: ParticipantIdentityCharsInvalidError });\n/**\n * @class ParticipantMaxTracksExceededError\n * @classdesc Raised whenever a Participant tries to publish a Track and the maximum number of published tracks allowed in the Room at the same time has been reached\n * @extends TwilioError\n * @property {number} code - 53203\n * @property {string} message - 'The maximum number of published tracks allowed in the Room at the same time has been reached'\n */\nvar ParticipantMaxTracksExceededError = /** @class */ (function (_super) {\n __extends(ParticipantMaxTracksExceededError, _super);\n function ParticipantMaxTracksExceededError() {\n var _this = _super.call(this, 53203, 'The maximum number of published tracks allowed in the Room at the same time has been reached') || this;\n Object.setPrototypeOf(_this, ParticipantMaxTracksExceededError.prototype);\n return _this;\n }\n return ParticipantMaxTracksExceededError;\n}(TwilioError));\nexports.ParticipantMaxTracksExceededError = ParticipantMaxTracksExceededError;\nObject.defineProperty(TwilioErrorByCode, 53203, { value: ParticipantMaxTracksExceededError });\n/**\n * @class ParticipantNotFoundError\n * @classdesc Raised whenever attempting an operation on a non-existent Participant.\n * @extends TwilioError\n * @property {number} code - 53204\n * @property {string} message - 'Participant not found'\n */\nvar ParticipantNotFoundError = /** @class */ (function (_super) {\n __extends(ParticipantNotFoundError, _super);\n function ParticipantNotFoundError() {\n var _this = _super.call(this, 53204, 'Participant not found') || this;\n Object.setPrototypeOf(_this, ParticipantNotFoundError.prototype);\n return _this;\n }\n return ParticipantNotFoundError;\n}(TwilioError));\nexports.ParticipantNotFoundError = ParticipantNotFoundError;\nObject.defineProperty(TwilioErrorByCode, 53204, { value: ParticipantNotFoundError });\n/**\n * @class ParticipantDuplicateIdentityError\n * @classdesc Raised by the server to the existing Participant when a new Participant joins a Room with the same identity as the existing Participant.\n * @extends TwilioError\n * @property {number} code - 53205\n * @property {string} message - 'Participant disconnected because of duplicate identity'\n */\nvar ParticipantDuplicateIdentityError = /** @class */ (function (_super) {\n __extends(ParticipantDuplicateIdentityError, _super);\n function ParticipantDuplicateIdentityError() {\n var _this = _super.call(this, 53205, 'Participant disconnected because of duplicate identity') || this;\n Object.setPrototypeOf(_this, ParticipantDuplicateIdentityError.prototype);\n return _this;\n }\n return ParticipantDuplicateIdentityError;\n}(TwilioError));\nexports.ParticipantDuplicateIdentityError = ParticipantDuplicateIdentityError;\nObject.defineProperty(TwilioErrorByCode, 53205, { value: ParticipantDuplicateIdentityError });\n/**\n * @class TrackInvalidError\n * @classdesc Raised whenever a Track is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53300\n * @property {string} message - 'Track is invalid'\n */\nvar TrackInvalidError = /** @class */ (function (_super) {\n __extends(TrackInvalidError, _super);\n function TrackInvalidError() {\n var _this = _super.call(this, 53300, 'Track is invalid') || this;\n Object.setPrototypeOf(_this, TrackInvalidError.prototype);\n return _this;\n }\n return TrackInvalidError;\n}(TwilioError));\nexports.TrackInvalidError = TrackInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53300, { value: TrackInvalidError });\n/**\n * @class TrackNameInvalidError\n * @classdesc Raised whenever a Track name is invalid, and the scenario is not covered by a more specific error code.\n * @extends TwilioError\n * @property {number} code - 53301\n * @property {string} message - 'Track name is invalid'\n */\nvar TrackNameInvalidError = /** @class */ (function (_super) {\n __extends(TrackNameInvalidError, _super);\n function TrackNameInvalidError() {\n var _this = _super.call(this, 53301, 'Track name is invalid') || this;\n Object.setPrototypeOf(_this, TrackNameInvalidError.prototype);\n return _this;\n }\n return TrackNameInvalidError;\n}(TwilioError));\nexports.TrackNameInvalidError = TrackNameInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53301, { value: TrackNameInvalidError });\n/**\n * @class TrackNameTooLongError\n * @classdesc Raised whenever a Track name is too long.\n * @extends TwilioError\n * @property {number} code - 53302\n * @property {string} message - 'Track name is too long'\n */\nvar TrackNameTooLongError = /** @class */ (function (_super) {\n __extends(TrackNameTooLongError, _super);\n function TrackNameTooLongError() {\n var _this = _super.call(this, 53302, 'Track name is too long') || this;\n Object.setPrototypeOf(_this, TrackNameTooLongError.prototype);\n return _this;\n }\n return TrackNameTooLongError;\n}(TwilioError));\nexports.TrackNameTooLongError = TrackNameTooLongError;\nObject.defineProperty(TwilioErrorByCode, 53302, { value: TrackNameTooLongError });\n/**\n * @class TrackNameCharsInvalidError\n * @classdesc Raised whenever a Track name contains invalid characters.\n * @extends TwilioError\n * @property {number} code - 53303\n * @property {string} message - 'Track name contains invalid characters'\n */\nvar TrackNameCharsInvalidError = /** @class */ (function (_super) {\n __extends(TrackNameCharsInvalidError, _super);\n function TrackNameCharsInvalidError() {\n var _this = _super.call(this, 53303, 'Track name contains invalid characters') || this;\n Object.setPrototypeOf(_this, TrackNameCharsInvalidError.prototype);\n return _this;\n }\n return TrackNameCharsInvalidError;\n}(TwilioError));\nexports.TrackNameCharsInvalidError = TrackNameCharsInvalidError;\nObject.defineProperty(TwilioErrorByCode, 53303, { value: TrackNameCharsInvalidError });\n/**\n * @class TrackNameIsDuplicatedError\n * @classdesc Raised whenever a Participant is currently publishing a Track with the same name.\n * @extends TwilioError\n * @property {number} code - 53304\n * @property {string} message - 'Track name is duplicated'\n */\nvar TrackNameIsDuplicatedError = /** @class */ (function (_super) {\n __extends(TrackNameIsDuplicatedError, _super);\n function TrackNameIsDuplicatedError() {\n var _this = _super.call(this, 53304, 'Track name is duplicated') || this;\n Object.setPrototypeOf(_this, TrackNameIsDuplicatedError.prototype);\n return _this;\n }\n return TrackNameIsDuplicatedError;\n}(TwilioError));\nexports.TrackNameIsDuplicatedError = TrackNameIsDuplicatedError;\nObject.defineProperty(TwilioErrorByCode, 53304, { value: TrackNameIsDuplicatedError });\n/**\n * @class TrackServerTrackCapacityReachedError\n * @classdesc The server does not have enough resources available to create a new Track.\n * @extends TwilioError\n * @property {number} code - 53305\n * @property {string} message - 'The server has reached capacity and cannot fulfill this request'\n */\nvar TrackServerTrackCapacityReachedError = /** @class */ (function (_super) {\n __extends(TrackServerTrackCapacityReachedError, _super);\n function TrackServerTrackCapacityReachedError() {\n var _this = _super.call(this, 53305, 'The server has reached capacity and cannot fulfill this request') || this;\n Object.setPrototypeOf(_this, TrackServerTrackCapacityReachedError.prototype);\n return _this;\n }\n return TrackServerTrackCapacityReachedError;\n}(TwilioError));\nexports.TrackServerTrackCapacityReachedError = TrackServerTrackCapacityReachedError;\nObject.defineProperty(TwilioErrorByCode, 53305, { value: TrackServerTrackCapacityReachedError });\n/**\n * @class MediaClientLocalDescFailedError\n * @classdesc Raised whenever a Client is unable to create or apply a local media description.\n * @extends TwilioError\n * @property {number} code - 53400\n * @property {string} message - 'Client is unable to create or apply a local media description'\n */\nvar MediaClientLocalDescFailedError = /** @class */ (function (_super) {\n __extends(MediaClientLocalDescFailedError, _super);\n function MediaClientLocalDescFailedError() {\n var _this = _super.call(this, 53400, 'Client is unable to create or apply a local media description') || this;\n Object.setPrototypeOf(_this, MediaClientLocalDescFailedError.prototype);\n return _this;\n }\n return MediaClientLocalDescFailedError;\n}(TwilioError));\nexports.MediaClientLocalDescFailedError = MediaClientLocalDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53400, { value: MediaClientLocalDescFailedError });\n/**\n * @class MediaServerLocalDescFailedError\n * @classdesc Raised whenever the Server is unable to create or apply a local media description.\n * @extends TwilioError\n * @property {number} code - 53401\n * @property {string} message - 'Server is unable to create or apply a local media description'\n */\nvar MediaServerLocalDescFailedError = /** @class */ (function (_super) {\n __extends(MediaServerLocalDescFailedError, _super);\n function MediaServerLocalDescFailedError() {\n var _this = _super.call(this, 53401, 'Server is unable to create or apply a local media description') || this;\n Object.setPrototypeOf(_this, MediaServerLocalDescFailedError.prototype);\n return _this;\n }\n return MediaServerLocalDescFailedError;\n}(TwilioError));\nexports.MediaServerLocalDescFailedError = MediaServerLocalDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53401, { value: MediaServerLocalDescFailedError });\n/**\n * @class MediaClientRemoteDescFailedError\n * @classdesc Raised whenever the Client receives a remote media description but is unable to apply it.\n * @extends TwilioError\n * @property {number} code - 53402\n * @property {string} message - 'Client is unable to apply a remote media description'\n */\nvar MediaClientRemoteDescFailedError = /** @class */ (function (_super) {\n __extends(MediaClientRemoteDescFailedError, _super);\n function MediaClientRemoteDescFailedError() {\n var _this = _super.call(this, 53402, 'Client is unable to apply a remote media description') || this;\n Object.setPrototypeOf(_this, MediaClientRemoteDescFailedError.prototype);\n return _this;\n }\n return MediaClientRemoteDescFailedError;\n}(TwilioError));\nexports.MediaClientRemoteDescFailedError = MediaClientRemoteDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53402, { value: MediaClientRemoteDescFailedError });\n/**\n * @class MediaServerRemoteDescFailedError\n * @classdesc Raised whenever the Server receives a remote media description but is unable to apply it.\n * @extends TwilioError\n * @property {number} code - 53403\n * @property {string} message - 'Server is unable to apply a remote media description'\n */\nvar MediaServerRemoteDescFailedError = /** @class */ (function (_super) {\n __extends(MediaServerRemoteDescFailedError, _super);\n function MediaServerRemoteDescFailedError() {\n var _this = _super.call(this, 53403, 'Server is unable to apply a remote media description') || this;\n Object.setPrototypeOf(_this, MediaServerRemoteDescFailedError.prototype);\n return _this;\n }\n return MediaServerRemoteDescFailedError;\n}(TwilioError));\nexports.MediaServerRemoteDescFailedError = MediaServerRemoteDescFailedError;\nObject.defineProperty(TwilioErrorByCode, 53403, { value: MediaServerRemoteDescFailedError });\n/**\n * @class MediaNoSupportedCodecError\n * @classdesc Raised whenever the intersection of codecs supported by the Client and the Server (or, in peer-to-peer, the Client and another Participant) is empty.\n * @extends TwilioError\n * @property {number} code - 53404\n * @property {string} message - 'No supported codec'\n */\nvar MediaNoSupportedCodecError = /** @class */ (function (_super) {\n __extends(MediaNoSupportedCodecError, _super);\n function MediaNoSupportedCodecError() {\n var _this = _super.call(this, 53404, 'No supported codec') || this;\n Object.setPrototypeOf(_this, MediaNoSupportedCodecError.prototype);\n return _this;\n }\n return MediaNoSupportedCodecError;\n}(TwilioError));\nexports.MediaNoSupportedCodecError = MediaNoSupportedCodecError;\nObject.defineProperty(TwilioErrorByCode, 53404, { value: MediaNoSupportedCodecError });\n/**\n * @class MediaConnectionError\n * @classdesc Raised by the Client or Server whenever a media connection fails or raised by the Client whenever it detects that media has stopped flowing.\n * @extends TwilioError\n * @property {number} code - 53405\n * @property {string} message - 'Media connection failed or Media activity ceased'\n */\nvar MediaConnectionError = /** @class */ (function (_super) {\n __extends(MediaConnectionError, _super);\n function MediaConnectionError() {\n var _this = _super.call(this, 53405, 'Media connection failed or Media activity ceased') || this;\n Object.setPrototypeOf(_this, MediaConnectionError.prototype);\n return _this;\n }\n return MediaConnectionError;\n}(TwilioError));\nexports.MediaConnectionError = MediaConnectionError;\nObject.defineProperty(TwilioErrorByCode, 53405, { value: MediaConnectionError });\n/**\n * @class MediaDTLSTransportFailedError\n * @classdesc There was a problem while negotiating with the remote DTLS peer. Therefore the Participant will not be able to publish or subscribe to Tracks.\n * @extends TwilioError\n * @property {number} code - 53407\n * @property {string} message - 'Media connection failed due to DTLS handshake failure'\n */\nvar MediaDTLSTransportFailedError = /** @class */ (function (_super) {\n __extends(MediaDTLSTransportFailedError, _super);\n function MediaDTLSTransportFailedError() {\n var _this = _super.call(this, 53407, 'Media connection failed due to DTLS handshake failure') || this;\n Object.setPrototypeOf(_this, MediaDTLSTransportFailedError.prototype);\n return _this;\n }\n return MediaDTLSTransportFailedError;\n}(TwilioError));\nexports.MediaDTLSTransportFailedError = MediaDTLSTransportFailedError;\nObject.defineProperty(TwilioErrorByCode, 53407, { value: MediaDTLSTransportFailedError });\n/**\n * @class ConfigurationAcquireFailedError\n * @classdesc Raised whenever the Client is unable to acquire configuration information from the Server.\n * @extends TwilioError\n * @property {number} code - 53500\n * @property {string} message - 'Unable to acquire configuration'\n */\nvar ConfigurationAcquireFailedError = /** @class */ (function (_super) {\n __extends(ConfigurationAcquireFailedError, _super);\n function ConfigurationAcquireFailedError() {\n var _this = _super.call(this, 53500, 'Unable to acquire configuration') || this;\n Object.setPrototypeOf(_this, ConfigurationAcquireFailedError.prototype);\n return _this;\n }\n return ConfigurationAcquireFailedError;\n}(TwilioError));\nexports.ConfigurationAcquireFailedError = ConfigurationAcquireFailedError;\nObject.defineProperty(TwilioErrorByCode, 53500, { value: ConfigurationAcquireFailedError });\n/**\n * @class ConfigurationAcquireTurnFailedError\n * @classdesc Raised whenever the Server is unable to return TURN credentials to the Client\n * @extends TwilioError\n * @property {number} code - 53501\n * @property {string} message - 'Unable to acquire TURN credentials'\n */\nvar ConfigurationAcquireTurnFailedError = /** @class */ (function (_super) {\n __extends(ConfigurationAcquireTurnFailedError, _super);\n function ConfigurationAcquireTurnFailedError() {\n var _this = _super.call(this, 53501, 'Unable to acquire TURN credentials') || this;\n Object.setPrototypeOf(_this, ConfigurationAcquireTurnFailedError.prototype);\n return _this;\n }\n return ConfigurationAcquireTurnFailedError;\n}(TwilioError));\nexports.ConfigurationAcquireTurnFailedError = ConfigurationAcquireTurnFailedError;\nObject.defineProperty(TwilioErrorByCode, 53501, { value: ConfigurationAcquireTurnFailedError });\n//# sourceMappingURL=twilio-video-errors.js.map","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","'use strict';\nvar WebRTC = {};\nObject.defineProperties(WebRTC, {\n getStats: {\n enumerable: true,\n value: require('./getstats')\n },\n getUserMedia: {\n enumerable: true,\n value: require('./getusermedia')\n },\n MediaStream: {\n enumerable: true,\n value: require('./mediastream')\n },\n MediaStreamTrack: {\n enumerable: true,\n value: require('./mediastreamtrack')\n },\n RTCIceCandidate: {\n enumerable: true,\n value: require('./rtcicecandidate')\n },\n RTCPeerConnection: {\n enumerable: true,\n value: require('./rtcpeerconnection')\n },\n RTCSessionDescription: {\n enumerable: true,\n value: require('./rtcsessiondescription')\n }\n});\nmodule.exports = WebRTC;\n//# sourceMappingURL=index.js.map","/* globals chrome, navigator */\n'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/**\n * Check whether the current browser is an Android device.\n * @returns {boolean}\n */\nfunction isAndroid() {\n return /Android/.test(navigator.userAgent);\n}\n/**\n * Detects whether or not a device is an Apple touch screen device.\n * @returns {boolean}\n */\nfunction hasTouchScreen() {\n return !!(navigator && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n}\n/**\n * Detects whether or not a device is an iPad.\n * @returns {boolean}\n */\nfunction isIpad() {\n return hasTouchScreen() && window.screen.width >= 744 && (/Macintosh/i.test(navigator.userAgent)\n || /iPad/.test(navigator.userAgent)\n || /iPad/.test(navigator.platform));\n}\n/**\n * Detects whether or not a device is an iPhone.\n * @returns {boolean}\n */\nfunction isIphone() {\n return hasTouchScreen() && window.screen.width <= 476 && (/Macintosh/i.test(navigator.userAgent)\n || /iPhone/.test(navigator.userAgent)\n || /iPhone/.test(navigator.platform));\n}\n/**\n * Check whether the current device is an iOS device.\n * @returns {boolean}\n */\nfunction isIOS() {\n return isIpad() || isIphone();\n}\n/**\n * Check whether the current browser is a mobile browser\n * @returns {boolean}\n */\nfunction isMobile() {\n return /Mobi/.test(navigator.userAgent);\n}\n/**\n * Check whether the current browser is non-Chromium Edge.\n * @param {string} browser\n * @returns {boolean}\n */\nfunction isNonChromiumEdge(browser) {\n return browser === 'chrome' && /Edge/.test(navigator.userAgent) && (typeof chrome === 'undefined' || typeof chrome.runtime === 'undefined');\n}\n/**\n * Get the name of the rebranded Chromium browser, if any. Re-branded Chrome's user\n * agent has the following format:\n * / () / () Chrome/ [Mobile] Safari/\n * @param browser\n * @returns {?string} Name of the rebranded Chrome browser, or null if the browser\n * is either not Chrome or vanilla Chrome.\n */\nfunction rebrandedChromeBrowser(browser) {\n // If the browser is not Chrome based, then it is not a rebranded Chrome browser.\n if (browser !== 'chrome') {\n return null;\n }\n // Latest desktop Brave browser has a \"brave\" property in navigator.\n if ('brave' in navigator) {\n return 'brave';\n }\n // Remove the \"(.+)\" entries from the user agent thereby retaining only the\n // [/] entries.\n var parenthesizedSubstrings = getParenthesizedSubstrings(navigator.userAgent);\n var nameAndVersions = parenthesizedSubstrings.reduce(function (userAgent, substring) { return userAgent.replace(substring, ''); }, navigator.userAgent);\n // Extract the potential browser s by ignoring the first two names, which\n // point to and .\n var matches = nameAndVersions.match(/[^\\s]+/g) || [];\n var _a = __read(matches.map(function (nameAndVersion) {\n return nameAndVersion.split('/')[0].toLowerCase();\n })), browserNames = _a.slice(2);\n // Extract the that is not expected to be present in the vanilla Chrome\n // browser, which indicates the rebranded name (ex: \"edg[e]\", \"electron\"). If null,\n // then this is a vanilla Chrome browser.\n return browserNames.find(function (name) {\n return !['chrome', 'mobile', 'safari'].includes(name);\n }) || null;\n}\n/**\n * Get the name of the mobile webkit based browser, if any.\n * @param browser\n * @returns {?string} Name of the mobile webkit based browser, or null if the browser\n * is either not webkit based or mobile safari.\n */\nfunction mobileWebKitBrowser(browser) {\n if (browser !== 'safari') {\n return null;\n }\n if ('brave' in navigator) {\n return 'brave';\n }\n return ['edge', 'edg'].find(function (name) {\n return navigator.userAgent.toLowerCase().includes(name);\n }) || null;\n}\n/**\n * Get the top level parenthesized substrings within a given string. Unmatched\n * parentheses are ignored.\n * Ex: \"abc) (def) gh(ij) (kl (mn)o) (pqr\" => [\"(def)\", \"(ij)\", \"(kl (mn)o)\"]\n * @param {string} string\n * @returns {string[]}\n */\nfunction getParenthesizedSubstrings(string) {\n var openParenthesisPositions = [];\n var substrings = [];\n for (var i = 0; i < string.length; i++) {\n if (string[i] === '(') {\n openParenthesisPositions.push(i);\n }\n else if (string[i] === ')' && openParenthesisPositions.length > 0) {\n var openParenthesisPosition = openParenthesisPositions.pop();\n if (openParenthesisPositions.length === 0) {\n substrings.push(string.substring(openParenthesisPosition, i + 1));\n }\n }\n }\n return substrings;\n}\nmodule.exports = {\n isAndroid: isAndroid,\n isIOS: isIOS,\n isIpad: isIpad,\n isIphone: isIphone,\n isMobile: isMobile,\n isNonChromiumEdge: isNonChromiumEdge,\n mobileWebKitBrowser: mobileWebKitBrowser,\n rebrandedChromeBrowser: rebrandedChromeBrowser\n};\n//# sourceMappingURL=browserdetection.js.map","'use strict';\n/**\n * A {@link Timeout} represents a resettable and clearable timeout.\n */\nvar Timeout = /** @class */ (function () {\n /**\n * Construct a {@link Timeout}.\n * @param {function} fn - Function to call\n * @param {number} delay - Delay in milliseconds\n * @param {boolean} [autoStart=true] - If true, then start the {@link Timeout}.\n */\n function Timeout(fn, delay, autoStart) {\n if (autoStart === void 0) { autoStart = true; }\n Object.defineProperties(this, {\n _delay: {\n value: delay,\n writable: true\n },\n _fn: {\n value: fn\n },\n _timeout: {\n value: null,\n writable: true\n }\n });\n if (autoStart) {\n this.start();\n }\n }\n Object.defineProperty(Timeout.prototype, \"delay\", {\n /**\n * The {@link Timeout} delay in milliseconds.\n * @property {number}\n */\n get: function () {\n return this._delay;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Timeout.prototype, \"isSet\", {\n /**\n * Whether the {@link Timeout} is set.\n * @property {boolean}\n */\n get: function () {\n return !!this._timeout;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Update the {@link Timeout} delay.\n * @param {number} delay\n * @returns {void}\n */\n Timeout.prototype.setDelay = function (delay) {\n this._delay = delay;\n };\n /**\n * Start the {@link Timeout}, if not already started.\n * @returns {void}\n */\n Timeout.prototype.start = function () {\n var _this = this;\n if (!this.isSet) {\n this._timeout = setTimeout(function () {\n var fn = _this._fn;\n _this.clear();\n fn();\n }, this._delay);\n }\n };\n /**\n * Clear the {@link Timeout}.\n * @returns {void}\n */\n Timeout.prototype.clear = function () {\n clearTimeout(this._timeout);\n this._timeout = null;\n };\n /**\n * Reset the {@link Timeout}.\n * @returns {void}\n */\n Timeout.prototype.reset = function () {\n this.clear();\n this.start();\n };\n return Timeout;\n}());\nmodule.exports = Timeout;\n//# sourceMappingURL=timeout.js.map","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","'use strict';\nmodule.exports = {\n LocalAudioTrack: require('./localaudiotrack'),\n LocalVideoTrack: require('./localvideotrack'),\n LocalDataTrack: require('./localdatatrack')\n};\n//# sourceMappingURL=index.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar EventEmitter = require('events').EventEmitter;\nvar util = require('./util');\n/**\n * {@link StateMachine} represents a state machine. The state machine supports a\n * reentrant locking mechanism to allow asynchronous state transitions to ensure\n * they have not been preempted. Calls to {@link StateMachine#takeLock} are\n * guaranteed to be resolved in FIFO order.\n * @extends EventEmitter\n * @property {boolean} isLocked - whether or not the {@link StateMachine} is\n * locked performing asynchronous state transition\n * @property {string} state - the current state\n * @emits {@link StateMachine#stateChanged}\n */\nvar StateMachine = /** @class */ (function (_super) {\n __extends(StateMachine, _super);\n /**\n * Construct a {@link StateMachine}.\n * @param {string} initialState - the intiial state\n * @param {object} states\n */\n function StateMachine(initialState, states) {\n var _this = _super.call(this) || this;\n var lock = null;\n var state = initialState;\n states = transformStates(states);\n Object.defineProperties(_this, {\n _lock: {\n get: function () {\n return lock;\n },\n set: function (_lock) {\n lock = _lock;\n }\n },\n _reachableStates: {\n value: reachable(states)\n },\n _state: {\n get: function () {\n return state;\n },\n set: function (_state) {\n state = _state;\n }\n },\n _states: {\n value: states\n },\n _whenDeferreds: {\n value: new Set()\n },\n isLocked: {\n enumerable: true,\n get: function () {\n return lock !== null;\n }\n },\n state: {\n enumerable: true,\n get: function () {\n return state;\n }\n }\n });\n _this.on('stateChanged', function (state) {\n _this._whenDeferreds.forEach(function (deferred) {\n deferred.when(state, deferred.resolve, deferred.reject);\n });\n });\n return _this;\n }\n /**\n * Returns a promise whose executor function is called on each state change.\n * @param {function(state: string, resolve: function, reject: function): void} when\n * @returns {Promise.<*>}\n * @private\n */\n StateMachine.prototype._whenPromise = function (when) {\n var _this = this;\n if (typeof when !== 'function') {\n return Promise.reject(new Error('when() executor must be a function'));\n }\n var deferred = util.defer();\n deferred.when = when;\n this._whenDeferreds.add(deferred);\n return deferred.promise.then(function (payload) {\n _this._whenDeferreds.delete(deferred);\n return payload;\n }, function (error) {\n _this._whenDeferreds.delete(deferred);\n throw error;\n });\n };\n /**\n * This method takes a lock and passes the {@link StateMachine#Key} to your\n * transition function. You may perform zero or more state transitions in your\n * transition function, but you should check for preemption in each tick. You\n * may also reenter the lock. Once the Promise returned by your transition\n * function resolves or rejects, this method releases the lock it acquired for\n * you.\n * @param {string} name - a name for the lock\n * @param {function(StateMachine#Key): Promise} transitionFunction\n * @returns {Promise}\n */\n // NOTE(mroberts): This method is named after a Haskell function:\n // https://hackage.haskell.org/package/base-4.8.2.0/docs/Control-Exception.html#v:bracket\n StateMachine.prototype.bracket = function (name, transitionFunction) {\n var key;\n var self = this;\n function releaseLock(error) {\n if (self.hasLock(key)) {\n self.releaseLockCompletely(key);\n }\n if (error) {\n throw error;\n }\n }\n return this.takeLock(name).then(function gotKey(_key) {\n key = _key;\n return transitionFunction(key);\n }).then(function success(result) {\n releaseLock();\n return result;\n }, releaseLock);\n };\n /**\n * Check whether or not a {@link StateMachine#Key} matches the lock.\n * @param {StateMachine#Key} key\n * @returns {boolean}\n */\n StateMachine.prototype.hasLock = function (key) {\n return this._lock === key;\n };\n /**\n * Preempt any pending state transitions and immediately transition to the new\n * state. If a lock name is specified, take the lock and return the\n * {@link StateMachine#Key}.\n * @param {string} newState\n * @param {?string} [name=null] - a name for the lock\n * @param {Array<*>} [payload=[]]\n * @returns {?StateMachine#Key}\n */\n StateMachine.prototype.preempt = function (newState, name, payload) {\n // 1. Check that the new state is valid.\n if (!isValidTransition(this._states, this.state, newState)) {\n throw new Error(\"Cannot transition from \\\"\" + this.state + \"\\\" to \\\"\" + newState + \"\\\"\");\n }\n // 2. Release the old lock, if any.\n var oldLock;\n if (this.isLocked) {\n oldLock = this._lock;\n this._lock = null;\n }\n // 3. Take the lock, if requested.\n var key = null;\n if (name) {\n key = this.takeLockSync(name);\n }\n // 4. If a lock wasn't requested, take a \"preemption\" lock in order to\n // maintain FIFO order of those taking locks.\n var preemptionKey = key ? null : this.takeLockSync('preemption');\n // 5. Transition.\n this.transition(newState, key || preemptionKey, payload);\n // 6. Preempt anyone blocked on the old lock.\n if (oldLock) {\n oldLock.resolve();\n }\n // 7. Release the \"preemption\" lock, if we took it.\n if (preemptionKey) {\n this.releaseLock(preemptionKey);\n }\n return key;\n };\n /**\n * Release a lock. This method succeeds only if the {@link StateMachine} is\n * still locked and has not been preempted.\n * @param {StateMachine#Key} key\n * @throws Error\n */\n StateMachine.prototype.releaseLock = function (key) {\n if (!this.isLocked) {\n throw new Error(\"Could not release the lock for \" + key.name + \" because the StateMachine is not locked\");\n }\n else if (!this.hasLock(key)) {\n throw new Error(\"Could not release the lock for \" + key.name + \" because \" + this._lock.name + \" has the lock\");\n }\n if (key.depth === 0) {\n this._lock = null;\n key.resolve();\n }\n else {\n key.depth--;\n }\n };\n /**\n * Release a lock completely, even if it has been reentered. This method\n * succeeds only if the {@link StateMachine} is still locked and has not been\n * preempted.\n * @param {StateMachine#Key} key\n * @throws Error\n */\n StateMachine.prototype.releaseLockCompletely = function (key) {\n if (!this.isLocked) {\n throw new Error(\"Could not release the lock for \" + key.name + \" because the StateMachine is not locked\");\n }\n else if (!this.hasLock(key)) {\n throw new Error(\"Could not release the lock for \" + key.name + \" because \" + this._lock.name + \" has the lock\");\n }\n key.depth = 0;\n this._lock = null;\n key.resolve();\n };\n /**\n * Take a lock, returning a Promise for the {@link StateMachine#Key}. You should\n * take a lock anytime you intend to perform asynchronous transitions. Calls to\n * this method are guaranteed to be resolved in FIFO order. You may reenter\n * a lock by passing its {@link StateMachine#Key}.\n * @param {string|StateMachine#Key} nameOrKey - a name for the lock or an\n * existing {@link StateMachine#Key}\n * @returns {Promise}\n */\n StateMachine.prototype.takeLock = function (nameOrKey) {\n var _this = this;\n // Reentrant lock\n if (typeof nameOrKey === 'object') {\n var key_1 = nameOrKey;\n return new Promise(function (resolve) {\n resolve(_this.takeLockSync(key_1));\n });\n }\n // New lock\n var name = nameOrKey;\n if (this.isLocked) {\n var takeLock = this.takeLock.bind(this, name);\n return this._lock.promise.then(takeLock);\n }\n return Promise.resolve(this.takeLockSync(name));\n };\n /**\n * Take a lock, returning the {@Link StateMachine#Key}. This method throws if\n * the {@link StateMachine} is locked or the wrong {@link StateMachine#Key} is\n * provided. You may reenter a lock by passing its {@link StateMachine#Key}.\n * @param {string|StateMachine#Key} nameOrKey - a name for the lock or an\n * existing {@link StateMachine#Key}\n * @returns {object}\n * @throws Error\n */\n StateMachine.prototype.takeLockSync = function (nameOrKey) {\n var key = typeof nameOrKey === 'string' ? null : nameOrKey;\n var name = key ? key.name : nameOrKey;\n if (key && !this.hasLock(key) || !key && this.isLocked) {\n throw new Error(\"Could not take the lock for \" + name + \" because the lock for \" + this._lock.name + \" was not released\");\n }\n // Reentrant lock\n if (key) {\n key.depth++;\n return key;\n }\n // New lock\n var lock = makeLock(name);\n this._lock = lock;\n return lock;\n };\n /**\n * Transition to a new state. If the {@link StateMachine} is locked, you must\n * provide the {@link StateMachine#Key}. An invalid state or the wrong\n * {@link StateMachine#Key} will throw an error.\n * @param {string} newState\n * @param {?StateMachine#Key} [key=null]\n * @param {Array<*>} [payload=[]]\n * @throws {Error}\n */\n StateMachine.prototype.transition = function (newState, key, payload) {\n payload = payload || [];\n // 1. If we're locked, required the key.\n if (this.isLocked) {\n if (!key) {\n throw new Error('You must provide the key in order to ' +\n 'transition');\n }\n else if (!this.hasLock(key)) {\n throw new Error(\"Could not transition using the key for \" + key.name + \" because \" + this._lock.name + \" has the lock\");\n }\n }\n else if (key) {\n throw new Error(\"Key provided for \" + key.name + \", but the StateMachine was not locked (possibly due to preemption)\");\n }\n // 2. Check that the new state is valid.\n if (!isValidTransition(this._states, this.state, newState)) {\n throw new Error(\"Cannot transition from \\\"\" + this.state + \"\\\" to \\\"\" + newState + \"\\\"\");\n }\n // 3. Update the state and emit an event.\n this._state = newState;\n this.emit.apply(this, __spreadArray([], __read(['stateChanged', newState].concat(payload))));\n };\n /**\n * Attempt to transition to a new state. Unlike {@link StateMachine#transition},\n * this method does not throw.\n * @param {string} newState\n * @param {?StateMachine#Key} [key=null]\n * @param {Array<*>} [payload=[]]\n * @returns {boolean}\n */\n StateMachine.prototype.tryTransition = function (newState, key, payload) {\n try {\n this.transition(newState, key, payload);\n }\n catch (error) {\n return false;\n }\n return true;\n };\n /**\n * Return a Promise that resolves when the {@link StateMachine} transitions to\n * the specified state. If the {@link StateMachine} transitions such that the\n * requested state becomes unreachable, the Promise rejects.\n * @param {string} state\n * @returns {Promise}\n */\n StateMachine.prototype.when = function (state) {\n var _this = this;\n if (this.state === state) {\n return Promise.resolve(this);\n }\n else if (!isValidTransition(this._reachableStates, this.state, state)) {\n return Promise.reject(createUnreachableError(this.state, state));\n }\n return this._whenPromise(function (newState, resolve, reject) {\n if (newState === state) {\n resolve(_this);\n }\n else if (!isValidTransition(_this._reachableStates, newState, state)) {\n reject(createUnreachableError(newState, state));\n }\n });\n };\n return StateMachine;\n}(EventEmitter));\n/**\n * @event StateMachine#stateChanged\n * @param {string} newState\n */\n/**\n * Check if a transition is valid.\n * @private\n * @param {Map<*, Set<*>>} graph\n * @param {*} from\n * @param {*} to\n * @returns {boolean}\n */\nfunction isValidTransition(graph, from, to) {\n return graph.get(from).has(to);\n}\n/**\n * @typedef {object} StateMachine#Key\n */\nfunction makeLock(name) {\n var lock = util.defer();\n lock.name = name;\n lock.depth = 0;\n return lock;\n}\n/**\n * Compute the transitive closure of a graph (i.e. what nodes are reachable from\n * where).\n * @private\n * @param {Map<*, Set<*>>} graph\n * @returns {Map<*, Set<*>>}\n */\nfunction reachable(graph) {\n return Array.from(graph.keys()).reduce(function (newGraph, from) { return newGraph.set(from, reachableFrom(graph, from)); }, new Map());\n}\n/**\n * Compute the Set of node reachable from a particular node in the graph.\n * @private\n * @param {Map<*, Set<*>>} graph\n * @param {*} from\n * @param {Set<*>} [to]\n * @returns {Set<*>}\n */\nfunction reachableFrom(graph, from, to) {\n to = to || new Set();\n graph.get(from).forEach(function (node) {\n if (!to.has(node)) {\n to.add(node);\n reachableFrom(graph, node, to).forEach(to.add, to);\n }\n });\n return to;\n}\nfunction transformStates(states) {\n var newStates = new Map();\n for (var key in states) {\n newStates.set(key, new Set(states[key]));\n }\n return newStates;\n}\n/**\n * Create an \"unreachable state\" Error.\n * @param {string} here\n * @param {string} there\n * @returns {Error}\n */\nfunction createUnreachableError(here, there) {\n return new Error(\"\\\"\" + there + \"\\\" cannot be reached from \\\"\" + here + \"\\\"\");\n}\nmodule.exports = StateMachine;\n//# sourceMappingURL=statemachine.js.map","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('events');\nvar nInstances = 0;\nvar MediaSignaling = /** @class */ (function (_super) {\n __extends(MediaSignaling, _super);\n /**\n * Construct a {@link MediaSignaling}.\n * @param {Promise} getReceive\n * @param {string} channel\n */\n function MediaSignaling(getReceiver, channel, options) {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _instanceId: {\n value: nInstances++\n },\n channel: {\n value: channel,\n },\n _log: {\n value: options.log.createLog('default', _this)\n },\n _getReceiver: {\n value: getReceiver\n },\n _receiverPromise: {\n value: null,\n writable: true,\n },\n _transport: {\n value: null,\n writable: true\n }\n });\n return _this;\n }\n Object.defineProperty(MediaSignaling.prototype, \"isSetup\", {\n get: function () {\n return !!this._receiverPromise;\n },\n enumerable: false,\n configurable: true\n });\n MediaSignaling.prototype.toString = function () {\n return \"[MediaSignaling #\" + this._instanceId + \":\" + this.channel + \"]\";\n };\n MediaSignaling.prototype.setup = function (id) {\n var _this = this;\n this._teardown();\n this._log.info('setting up msp transport for id:', id);\n var receiverPromise = this._getReceiver(id).then(function (receiver) {\n if (receiver.kind !== 'data') {\n _this._log.error('Expected a DataTrackReceiver');\n }\n if (_this._receiverPromise !== receiverPromise) {\n return;\n }\n try {\n _this._transport = receiver.toDataTransport();\n _this.emit('ready', _this._transport);\n }\n catch (ex) {\n _this._log.error(\"Failed to toDataTransport: \" + ex.message);\n }\n receiver.once('close', function () { return _this._teardown(); });\n });\n this._receiverPromise = receiverPromise;\n };\n MediaSignaling.prototype._teardown = function () {\n if (this._transport) {\n this._log.info('Tearing down');\n this._transport = null;\n this._receiverPromise = null;\n this.emit('teardown');\n }\n };\n return MediaSignaling;\n}(EventEmitter));\nmodule.exports = MediaSignaling;\n//# sourceMappingURL=mediasignaling.js.map","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","/* globals RTCPeerConnection, RTCRtpTransceiver */\n'use strict';\nvar _a = require('./'), flatMap = _a.flatMap, guessBrowser = _a.guessBrowser;\n// NOTE(mmalavalli): We cache Chrome's sdpSemantics support in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar isSdpSemanticsSupported = null;\n/**\n * Check if Chrome supports specifying sdpSemantics for an RTCPeerConnection.\n * @return {boolean}\n */\nfunction checkIfSdpSemanticsIsSupported() {\n if (typeof isSdpSemanticsSupported === 'boolean') {\n return isSdpSemanticsSupported;\n }\n if (typeof RTCPeerConnection === 'undefined') {\n isSdpSemanticsSupported = false;\n return isSdpSemanticsSupported;\n }\n try {\n // eslint-disable-next-line no-new\n new RTCPeerConnection({ sdpSemantics: 'foo' });\n isSdpSemanticsSupported = false;\n }\n catch (e) {\n isSdpSemanticsSupported = true;\n }\n return isSdpSemanticsSupported;\n}\n// NOTE(mmalavalli): We cache Chrome's SDP format in order to prevent\n// instantiation of more than one RTCPeerConnection.\nvar chromeSdpFormat = null;\n/**\n * Clear cached Chrome's SDP format\n */\nfunction clearChromeCachedSdpFormat() {\n chromeSdpFormat = null;\n}\n/**\n * Get Chrome's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getChromeDefaultSdpFormat() {\n if (!chromeSdpFormat) {\n if (typeof RTCPeerConnection !== 'undefined'\n && 'addTransceiver' in RTCPeerConnection.prototype) {\n var pc = new RTCPeerConnection();\n try {\n pc.addTransceiver('audio');\n chromeSdpFormat = 'unified';\n }\n catch (e) {\n chromeSdpFormat = 'planb';\n }\n pc.close();\n }\n else {\n chromeSdpFormat = 'planb';\n }\n }\n return chromeSdpFormat;\n}\n/**\n * Get Chrome's SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getChromeSdpFormat(sdpSemantics) {\n if (!sdpSemantics || !checkIfSdpSemanticsIsSupported()) {\n return getChromeDefaultSdpFormat();\n }\n return {\n 'plan-b': 'planb',\n 'unified-plan': 'unified'\n }[sdpSemantics];\n}\n/**\n * Get Safari's default SDP format.\n * @returns {'planb'|'unified'}\n */\nfunction getSafariSdpFormat() {\n return typeof RTCRtpTransceiver !== 'undefined'\n && 'currentDirection' in RTCRtpTransceiver.prototype\n ? 'unified'\n : 'planb';\n}\n/**\n * Get the browser's default SDP format.\n * @param {'plan-b'|'unified-plan'} [sdpSemantics]\n * @returns {'planb'|'unified'}\n */\nfunction getSdpFormat(sdpSemantics) {\n return {\n chrome: getChromeSdpFormat(sdpSemantics),\n firefox: 'unified',\n safari: getSafariSdpFormat()\n }[guessBrowser()] || null;\n}\n/**\n * Match a pattern across lines, returning the first capture group for any\n * matches.\n * @param {string} pattern\n * @param {string} lines\n * @returns {Set} matches\n */\nfunction getMatches(pattern, lines) {\n var matches = lines.match(new RegExp(pattern, 'gm')) || [];\n return matches.reduce(function (results, line) {\n var match = line.match(new RegExp(pattern));\n return match ? results.add(match[1]) : results;\n }, new Set());\n}\n/**\n * Get a Set of MediaStreamTrack IDs from an SDP.\n * @param {string} pattern\n * @param {string} sdp\n * @returns {Set}\n */\nfunction getTrackIds(pattern, sdp) {\n return getMatches(pattern, sdp);\n}\n/**\n * Get a Set of MediaStreamTrack IDs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Set} trackIds\n */\nfunction getPlanBTrackIds(sdp) {\n return getTrackIds('^a=ssrc:[0-9]+ +msid:.+ +(.+) *$', sdp);\n}\n/**\n * Get a Set of MediaStreamTrack IDs from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @returns {Set} trackIds\n */\nfunction getUnifiedPlanTrackIds(sdp) {\n return getTrackIds('^a=msid:.+ +(.+) *$', sdp);\n}\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set}\n */\nfunction getPlanBSSRCs(sdp, trackId) {\n var pattern = \"^a=ssrc:([0-9]+) +msid:[^ ]+ +\" + trackId + \" *$\";\n return getMatches(pattern, sdp);\n}\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp - sdp string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n if (kind === void 0) { kind = '.*'; }\n if (direction === void 0) { direction = '.*'; }\n return sdp.split('\\r\\nm=').slice(1).map(function (mediaSection) { return \"m=\" + mediaSection; }).filter(function (mediaSection) {\n var kindPattern = new RegExp(\"m=\" + kind, 'gm');\n var directionPattern = new RegExp(\"a=\" + direction, 'gm');\n return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n });\n}\n/**\n * Get the Set of SSRCs announced in a MediaSection.\n * @param {string} mediaSection\n * @returns {Array} ssrcs\n */\nfunction getMediaSectionSSRCs(mediaSection) {\n return Array.from(getMatches('^a=ssrc:([0-9]+) +.*$', mediaSection));\n}\n/**\n * Get a Set of SSRCs for a MediaStreamTrack from a Unified Plan SDP.\n * @param {string} sdp - Unified Plan SDP\n * @param {string} trackId - MediaStreamTrack ID\n * @returns {Set}\n */\nfunction getUnifiedPlanSSRCs(sdp, trackId) {\n var mediaSections = getMediaSections(sdp);\n var msidAttrRegExp = new RegExp(\"^a=msid:[^ ]+ +\" + trackId + \" *$\", 'gm');\n var matchingMediaSections = mediaSections.filter(function (mediaSection) { return mediaSection.match(msidAttrRegExp); });\n return new Set(flatMap(matchingMediaSections, getMediaSectionSSRCs));\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from an SDP.\n * @param {function(string): Set} getTrackIds\n * @param {function(string, string): Set} getSSRCs\n * @param {string} sdp - SDP\n * @returns {Map>} trackIdsToSSRCs\n */\nfunction getTrackIdsToSSRCs(getTrackIds, getSSRCs, sdp) {\n return new Map(Array.from(getTrackIds(sdp)).map(function (trackId) { return [trackId, getSSRCs(sdp, trackId)]; }));\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map>} trackIdsToSSRCs\n */\nfunction getPlanBTrackIdsToSSRCs(sdp) {\n return getTrackIdsToSSRCs(getPlanBTrackIds, getPlanBSSRCs, sdp);\n}\n/**\n * Get a Map from MediaStreamTrack IDs to SSRCs from a Plan B SDP.\n * @param {string} sdp - Plan B SDP\n * @returns {Map>} trackIdsToSSRCs\n */\nfunction getUnifiedPlanTrackIdsToSSRCs(sdp) {\n return getTrackIdsToSSRCs(getUnifiedPlanTrackIds, getUnifiedPlanSSRCs, sdp);\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {function(string): Map>} getTrackIdsToSSRCs\n * @param {Map>} trackIdsToSSRCs\n * @param {string} sdp - SDP\n * @returns {strinng} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(getTrackIdsToSSRCs, trackIdsToSSRCs, sdp) {\n var newTrackIdsToSSRCs = getTrackIdsToSSRCs(sdp);\n var newSSRCsToOldSSRCs = new Map();\n // NOTE(mroberts): First, update a=ssrc attributes.\n newTrackIdsToSSRCs.forEach(function (ssrcs, trackId) {\n if (!trackIdsToSSRCs.has(trackId)) {\n trackIdsToSSRCs.set(trackId, ssrcs);\n return;\n }\n var oldSSRCs = Array.from(trackIdsToSSRCs.get(trackId));\n var newSSRCs = Array.from(ssrcs);\n oldSSRCs.forEach(function (oldSSRC, i) {\n var newSSRC = newSSRCs[i];\n newSSRCsToOldSSRCs.set(newSSRC, oldSSRC);\n var pattern = \"^a=ssrc:\" + newSSRC + \" (.*)$\";\n var replacement = \"a=ssrc:\" + oldSSRC + \" $1\";\n sdp = sdp.replace(new RegExp(pattern, 'gm'), replacement);\n });\n });\n // NOTE(mroberts): Then, update a=ssrc-group attributes.\n var pattern = '^(a=ssrc-group:[^ ]+ +)(.*)$';\n var matches = sdp.match(new RegExp(pattern, 'gm')) || [];\n matches.forEach(function (line) {\n var match = line.match(new RegExp(pattern));\n if (!match) {\n return;\n }\n var prefix = match[1];\n var newSSRCs = match[2];\n var oldSSRCs = newSSRCs.split(' ').map(function (newSSRC) {\n var oldSSRC = newSSRCsToOldSSRCs.get(newSSRC);\n return oldSSRC ? oldSSRC : newSSRC;\n }).join(' ');\n sdp = sdp.replace(match[0], prefix + oldSSRCs);\n });\n return sdp;\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updatePlanBTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n return updateTrackIdsToSSRCs(getPlanBTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the Plan B SDP itself. This\n * method ensures that SSRCs never change once announced.\n * @param {Map>} trackIdsToSSRCs\n * @param {string} sdp - Plan B SDP\n * @returns {string} updatedSdp - updated Plan B SDP\n */\nfunction updateUnifiedPlanTrackIdsToSSRCs(trackIdsToSSRCs, sdp) {\n return updateTrackIdsToSSRCs(getUnifiedPlanTrackIdsToSSRCs, trackIdsToSSRCs, sdp);\n}\nexports.clearChromeCachedSdpFormat = clearChromeCachedSdpFormat;\nexports.getSdpFormat = getSdpFormat;\nexports.getMediaSections = getMediaSections;\nexports.getPlanBTrackIds = getPlanBTrackIds;\nexports.getUnifiedPlanTrackIds = getUnifiedPlanTrackIds;\nexports.getPlanBSSRCs = getPlanBSSRCs;\nexports.getUnifiedPlanSSRCs = getUnifiedPlanSSRCs;\nexports.updatePlanBTrackIdsToSSRCs = updatePlanBTrackIdsToSSRCs;\nexports.updateUnifiedPlanTrackIdsToSSRCs = updateUnifiedPlanTrackIdsToSSRCs;\n//# sourceMappingURL=sdp.js.map","'use strict';\nvar EventEmitter = require('events').EventEmitter;\nvar hidePrivateAndCertainPublicPropertiesInClass = require('./util').hidePrivateAndCertainPublicPropertiesInClass;\nmodule.exports = hidePrivateAndCertainPublicPropertiesInClass(EventEmitter, ['domain']);\n//# sourceMappingURL=eventemitter.js.map","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","export interface Note {\n type: string\n message?: string\n originalValue?: T\n}\n\nexport abstract class Condition {\n private _notes!: Note[];\n\n constructor(\n public readonly operator: string,\n public readonly value: T\n ) {\n Object.defineProperty(this, '_notes', {\n writable: true\n });\n }\n\n get notes(): ReadonlyArray> | undefined {\n return this._notes;\n }\n\n addNote(note: Note) {\n this._notes = this._notes || [];\n this._notes.push(note);\n }\n}\n\nexport class DocumentCondition extends Condition {\n}\n\nexport class CompoundCondition extends DocumentCondition {\n constructor(operator: string, conditions: T[]) {\n if (!Array.isArray(conditions)) {\n throw new Error(`\"${operator}\" operator expects to receive an array of conditions`);\n }\n\n super(operator, conditions);\n }\n}\n\nexport const ITSELF = '__itself__';\nexport class FieldCondition extends Condition {\n public readonly field!: string | typeof ITSELF;\n\n constructor(operator: string, field: string | typeof ITSELF, value: T) {\n super(operator, value);\n this.field = field;\n }\n}\n\nexport const NULL_CONDITION = new DocumentCondition('__null__', null);\nexport type ConditionValue = T extends Condition ? V : unknown;\n","import { AnyObject, Subject, SubjectType, SubjectClass, ForcedSubject, AliasesMap } from './types';\n\nexport function wrapArray(value: T[] | T): T[] {\n return Array.isArray(value) ? value : [value];\n}\n\nexport function setByPath(object: AnyObject, path: string, value: unknown): void {\n let ref = object;\n let lastKey = path;\n\n if (path.indexOf('.') !== -1) {\n const keys = path.split('.');\n\n lastKey = keys.pop()!;\n ref = keys.reduce((res, prop) => {\n res[prop] = res[prop] || {};\n return res[prop] as AnyObject;\n }, object);\n }\n\n ref[lastKey] = value;\n}\n\nconst TYPE_FIELD = '__caslSubjectType__';\nexport function setSubjectType<\n T extends string,\n U extends Record\n>(type: T, object: U): U & ForcedSubject {\n if (object) {\n if (!object.hasOwnProperty(TYPE_FIELD)) {\n Object.defineProperty(object, TYPE_FIELD, { value: type });\n } else if (type !== object[TYPE_FIELD]) {\n throw new Error(`Trying to cast object to subject type ${type} but previously it was casted to ${object[TYPE_FIELD]}`);\n }\n }\n\n return object as U & ForcedSubject;\n}\n\nexport const isSubjectType = (value: unknown): value is SubjectType => {\n const type = typeof value;\n return type === 'string' || type === 'function';\n};\n\nconst getSubjectClassName = (value: SubjectClass) => value.modelName || value.name;\nexport const getSubjectTypeName = (value: SubjectType) => {\n return typeof value === 'string' ? value : getSubjectClassName(value);\n};\n\nexport function detectSubjectType(subject: Exclude): string {\n if (subject.hasOwnProperty(TYPE_FIELD)) {\n return (subject as any)[TYPE_FIELD];\n }\n\n return getSubjectClassName(subject.constructor as SubjectClass);\n}\n\ntype AliasMerge = (actions: string[], action: string | string[]) => string[];\nfunction expandActions(aliasMap: AliasesMap, rawActions: string | string[], merge: AliasMerge) {\n let actions = wrapArray(rawActions);\n let i = 0;\n\n while (i < actions.length) {\n const action = actions[i++];\n\n if (aliasMap.hasOwnProperty(action)) {\n actions = merge(actions, aliasMap[action]);\n }\n }\n\n return actions;\n}\n\nfunction findDuplicate(actions: string[], actionToFind: string | string[]) {\n if (typeof actionToFind === 'string' && actions.indexOf(actionToFind) !== -1) {\n return actionToFind;\n }\n\n for (let i = 0; i < actionToFind.length; i++) {\n if (actions.indexOf(actionToFind[i]) !== -1) return actionToFind[i];\n }\n\n return null;\n}\n\nconst defaultAliasMerge: AliasMerge = (actions, action) => actions.concat(action);\nfunction validateForCycles(aliasMap: AliasesMap, reservedAction: string) {\n if (reservedAction in aliasMap) {\n throw new Error(`Cannot use \"${reservedAction}\" as an alias because it's reserved action.`);\n }\n\n const keys = Object.keys(aliasMap);\n const mergeAliasesAndDetectCycles: AliasMerge = (actions, action) => {\n const duplicate = findDuplicate(actions, action);\n if (duplicate) throw new Error(`Detected cycle ${duplicate} -> ${actions.join(', ')}`);\n\n const isUsingReservedAction = typeof action === 'string' && action === reservedAction\n || actions.indexOf(reservedAction) !== -1\n || Array.isArray(action) && action.indexOf(reservedAction) !== -1;\n if (isUsingReservedAction) throw new Error(`Cannot make an alias to \"${reservedAction}\" because this is reserved action`);\n\n return actions.concat(action);\n };\n\n for (let i = 0; i < keys.length; i++) {\n expandActions(aliasMap, keys[i], mergeAliasesAndDetectCycles);\n }\n}\n\nexport type AliasResolverOptions = { skipValidate?: boolean; anyAction?: string };\nexport function createAliasResolver(aliasMap: AliasesMap, options?: AliasResolverOptions) {\n if (!options || options.skipValidate !== false) {\n validateForCycles(aliasMap, options && options.anyAction || 'manage');\n }\n\n return (action: string | string[]) => expandActions(aliasMap, action, defaultAliasMerge);\n}\n\nfunction copyArrayTo(dest: T[], target: T[], start: number) {\n for (let i = start; i < target.length; i++) {\n dest.push(target[i]);\n }\n}\n\nexport function mergePrioritized(\n array?: T[],\n anotherArray?: T[]\n): T[] {\n if (!array || !array.length) {\n return anotherArray || [];\n }\n\n if (!anotherArray || !anotherArray.length) {\n return array || [];\n }\n\n let i = 0;\n let j = 0;\n const merged: T[] = [];\n\n while (i < array.length && j < anotherArray.length) {\n if (array[i].priority < anotherArray[j].priority) {\n merged.push(array[i]);\n i++;\n } else {\n merged.push(anotherArray[j]);\n j++;\n }\n }\n\n copyArrayTo(merged, array, i);\n copyArrayTo(merged, anotherArray, j);\n\n return merged;\n}\n\nexport function getOrDefault(map: Map, key: K, defaultValue: () => V) {\n let value = map.get(key);\n\n if (!value) {\n value = defaultValue();\n map.set(key, value);\n }\n\n return value;\n}\n\nexport const identity = (x: T) => x;\n","import { Condition } from './Condition';\nimport { optimizedCompoundCondition } from './utils';\n\nexport const buildAnd = (conditions: Condition[]) => optimizedCompoundCondition('and', conditions);\nexport const buildOr = (conditions: Condition[]) => optimizedCompoundCondition('or', conditions);\n","import {\n FieldCondition,\n CompoundCondition,\n DocumentCondition,\n} from '../Condition';\nimport {\n DocumentInstruction,\n CompoundInstruction,\n FieldInstruction,\n} from '../types';\n\ninterface DefaultParsers {\n compound: Exclude,\n field: Exclude,\n document: Exclude\n}\n\nexport const defaultInstructionParsers: DefaultParsers = {\n compound(instruction, value, context) {\n const queries = Array.isArray(value) ? value : [value];\n const conditions = queries.map(query => context.parse(query));\n return new CompoundCondition(instruction.name, conditions);\n },\n field(instruction, value, context) {\n return new FieldCondition(instruction.name, context.field, value);\n },\n document(instruction, value) {\n return new DocumentCondition(instruction.name, value);\n }\n};\n","import { Condition } from '../Condition';\nimport {\n NamedInstruction,\n ParsingInstruction,\n FieldParsingContext,\n ParsingContext,\n} from '../types';\nimport { buildAnd } from '../builder';\nimport { defaultInstructionParsers } from './defaultInstructionParsers';\nimport {\n identity,\n hasOperators,\n object,\n pushIfNonNullCondition,\n objectKeysSkipIgnore,\n} from '../utils';\n\nexport type FieldQueryOperators = {\n [K in keyof T]: T[K] extends {} ? T[K] : never\n}[keyof T];\n\ntype ParsingInstructions = Record;\n\nexport interface QueryOptions {\n operatorToConditionName?(name: string): string\n defaultOperatorName?: string\n fieldContext?: Record\n documentContext?: Record\n useIgnoreValue?: boolean\n mergeFinalConditions?(conditions: Condition[]): Condition\n}\n\nexport type ObjectQueryFieldParsingContext = ParsingContext(value: unknown): value is T\n}>;\n\nexport class ObjectQueryParser<\n T extends Record,\n U extends FieldQueryOperators = FieldQueryOperators\n> {\n private readonly _instructions: ParsingInstructions;\n private _fieldInstructionContext: ObjectQueryFieldParsingContext;\n private _documentInstructionContext: ParsingContext<{ query: {} }>;\n private readonly _options: Required<\n Pick\n >;\n\n private readonly _objectKeys: typeof Object.keys;\n\n constructor(instructions: Record, options: QueryOptions = object()) {\n this.parse = this.parse.bind(this);\n this._options = {\n operatorToConditionName: options.operatorToConditionName || identity,\n defaultOperatorName: options.defaultOperatorName || 'eq',\n mergeFinalConditions: options.mergeFinalConditions || buildAnd,\n };\n this._instructions = Object.keys(instructions).reduce((all, name) => {\n all[name] = { name: this._options.operatorToConditionName(name), ...instructions[name] };\n return all;\n }, {} as ParsingInstructions);\n this._fieldInstructionContext = {\n ...options.fieldContext,\n field: '',\n query: {},\n parse: this.parse,\n hasOperators: (value: unknown): value is T => hasOperators(\n value,\n this._instructions,\n options.useIgnoreValue\n ),\n };\n this._documentInstructionContext = {\n ...options.documentContext,\n parse: this.parse,\n query: {}\n };\n this._objectKeys = options.useIgnoreValue ? objectKeysSkipIgnore : Object.keys;\n }\n\n setParse(parse: this['parse']) {\n this.parse = parse;\n this._fieldInstructionContext.parse = parse;\n this._documentInstructionContext.parse = parse;\n }\n\n protected parseField(field: string, operator: string, value: unknown, parentQuery: {}) {\n const instruction = this._instructions[operator];\n\n if (!instruction) {\n throw new Error(`Unsupported operator \"${operator}\"`);\n }\n\n if (instruction.type !== 'field') {\n throw new Error(`Unexpected ${instruction.type} operator \"${operator}\" at field level`);\n }\n\n this._fieldInstructionContext.field = field;\n this._fieldInstructionContext.query = parentQuery;\n\n return this.parseInstruction(instruction, value, this._fieldInstructionContext);\n }\n\n // eslint-disable-next-line class-methods-use-this\n protected parseInstruction(\n instruction: NamedInstruction,\n value: unknown,\n context: ParsingContext<{}>\n ) {\n if (typeof instruction.validate === 'function') {\n instruction.validate(instruction, value);\n }\n\n const parse: typeof instruction.parse = instruction.parse\n || defaultInstructionParsers[instruction.type as keyof typeof defaultInstructionParsers];\n return parse(instruction, value, context);\n }\n\n protected parseFieldOperators(field: string, value: U) {\n const conditions: Condition[] = [];\n const keys = this._objectKeys(value);\n\n for (let i = 0, length = keys.length; i < length; i++) {\n const op = keys[i];\n const instruction = this._instructions[op];\n\n if (!instruction) {\n throw new Error(`Field query for \"${field}\" may contain only operators or a plain object as a value`);\n }\n\n const condition = this.parseField(field, op, value[op as keyof U], value);\n pushIfNonNullCondition(conditions, condition);\n }\n\n return conditions;\n }\n\n parse(query: Q): Condition {\n const conditions = [];\n const keys = this._objectKeys(query);\n\n this._documentInstructionContext.query = query;\n\n for (let i = 0, length = keys.length; i < length; i++) {\n const key = keys[i];\n const value = query[key];\n const instruction = this._instructions[key];\n\n if (instruction) {\n if (instruction.type !== 'document' && instruction.type !== 'compound') {\n throw new Error(`Cannot use parsing instruction for operator \"${key}\" in \"document\" context as it is supposed to be used in \"${instruction.type}\" context`);\n }\n\n pushIfNonNullCondition(\n conditions,\n this.parseInstruction(instruction, value, this._documentInstructionContext)\n );\n } else if (this._fieldInstructionContext.hasOperators(value)) {\n conditions.push(...this.parseFieldOperators(key, value));\n } else {\n pushIfNonNullCondition(\n conditions,\n this.parseField(key, this._options.defaultOperatorName, value, query)\n );\n }\n }\n\n return this._options.mergeFinalConditions(conditions);\n }\n}\n","import { createInterpreter, ITSELF } from '@ucast/core';\nimport { getValueByPath, AnyObject, GetField } from './utils';\nimport { JsInterpretationOptions, JsInterpreter } from './types';\n\nconst defaultGet = (object: AnyObject, field: string) => object[field];\ntype Field = string | typeof ITSELF;\n\nexport function getObjectFieldCursor(object: T, path: string, get: GetField) {\n const dotIndex = path.lastIndexOf('.');\n\n if (dotIndex === -1) {\n return [object, path] as const;\n }\n\n return [\n get(object, path.slice(0, dotIndex)) as T,\n path.slice(dotIndex + 1)\n ] as const;\n}\n\nexport function getObjectField(object: unknown, field: Field, get: GetField = defaultGet) {\n if (field === ITSELF) {\n return object;\n }\n\n if (!object) {\n throw new Error(`Unable to get field \"${field}\" out of ${String(object)}.`);\n }\n\n return getValueByPath(object as Record, field, get);\n}\n\nexport function createGetter(get: T) {\n return (object: Parameters[0], field: Parameters[1]) => getObjectField(object, field, get);\n}\n\nexport function compare(a: T, b: T): 0 | 1 | -1 {\n if (a === b) {\n return 0;\n }\n\n return a > b ? 1 : -1;\n}\n\nexport function createJsInterpreter<\n T extends JsInterpreter,\n O extends Partial\n>(\n operators: Record,\n options: O = {} as O\n) {\n return createInterpreter(operators, {\n get: getObjectField,\n compare,\n ...options,\n });\n}\n","import * as instructions from './instructions';\n\nexport const allParsingInstructions = instructions;\nexport * from './instructions';\nexport * from './MongoQueryParser';\nexport * from './types';\nexport { defaultInstructionParsers as defaultParsers } from '@ucast/core';\n","import {\n CompoundCondition,\n FieldCondition,\n NamedInstruction,\n CompoundInstruction,\n FieldInstruction,\n DocumentInstruction,\n Comparable,\n ITSELF,\n NULL_CONDITION,\n FieldParsingContext,\n optimizedCompoundCondition,\n ObjectQueryFieldParsingContext,\n} from '@ucast/core';\nimport { MongoQuery } from './types';\n\nfunction ensureIsArray(instruction: NamedInstruction, value: unknown) {\n if (!Array.isArray(value)) {\n throw new Error(`\"${instruction.name}\" expects value to be an array`);\n }\n}\n\nfunction ensureIsNonEmptyArray(instruction: NamedInstruction, value: unknown[]) {\n ensureIsArray(instruction, value);\n\n if (!value.length) {\n throw new Error(`\"${instruction.name}\" expects to have at least one element in array`);\n }\n}\n\nfunction ensureIsComparable(instruction: NamedInstruction, value: string | number | Date) {\n const isComparable = typeof value === 'string' || typeof value === 'number' || value instanceof Date;\n\n if (!isComparable) {\n throw new Error(`\"${instruction.name}\" expects value to be comparable (i.e., string, number or date)`);\n }\n}\n\nconst ensureIs = (type: string) => (instruction: NamedInstruction, value: unknown) => {\n if (typeof value !== type) { // eslint-disable-line valid-typeof\n throw new Error(`\"${instruction.name}\" expects value to be a \"${type}\"`);\n }\n};\n\nexport const $and: CompoundInstruction[]> = {\n type: 'compound',\n validate: ensureIsNonEmptyArray,\n parse(instruction, queries, { parse }) {\n const conditions = queries.map(query => parse(query));\n return optimizedCompoundCondition(instruction.name, conditions);\n }\n};\nexport const $or = $and;\nexport const $nor: CompoundInstruction[]> = {\n type: 'compound',\n validate: ensureIsNonEmptyArray,\n};\n\nexport const $not: FieldInstruction | RegExp> = {\n type: 'field',\n validate(instruction, value) {\n const isValid = value && (value instanceof RegExp || value.constructor === Object);\n\n if (!isValid) {\n throw new Error(`\"${instruction.name}\" expects to receive either regular expression or object of field operators`);\n }\n },\n parse(instruction, value, context) {\n const condition = value instanceof RegExp\n ? new FieldCondition('regex' as typeof instruction.name, context.field, value)\n : context.parse(value, context);\n\n return new CompoundCondition(instruction.name, [condition]);\n },\n};\nexport const $elemMatch: FieldInstruction, ObjectQueryFieldParsingContext> = {\n type: 'field',\n validate(instruction, value) {\n if (!value || value.constructor !== Object) {\n throw new Error(`\"${instruction.name}\" expects to receive an object with nested query or field level operators`);\n }\n },\n parse(instruction, value, { parse, field, hasOperators }) {\n const condition = hasOperators(value) ? parse(value, { field: ITSELF }) : parse(value);\n return new FieldCondition(instruction.name, field, condition);\n }\n};\n\nexport const $size: FieldInstruction = {\n type: 'field',\n validate: ensureIs('number')\n};\nexport const $in: FieldInstruction = {\n type: 'field',\n validate: ensureIsArray,\n};\nexport const $nin = $in;\nexport const $all = $in;\nexport const $mod: FieldInstruction<[number, number]> = {\n type: 'field',\n validate(instruction, value) {\n if (!Array.isArray(value) || value.length !== 2) {\n throw new Error(`\"${instruction.name}\" expects an array with 2 numeric elements`);\n }\n }\n};\n\nexport const $exists: FieldInstruction = {\n type: 'field',\n validate: ensureIs('boolean'),\n};\n\nexport const $gte: FieldInstruction = {\n type: 'field',\n validate: ensureIsComparable\n};\nexport const $gt = $gte;\nexport const $lt = $gt;\nexport const $lte = $gt;\n\nexport const $eq: FieldInstruction = {\n type: 'field',\n};\nexport const $ne = $eq;\n\nexport interface RegExpFieldContext extends FieldParsingContext {\n query: {\n $options?: string\n }\n}\n\nexport const $regex: FieldInstruction = {\n type: 'field',\n validate(instruction, value) {\n if (!(value instanceof RegExp) && typeof value !== 'string') {\n throw new Error(`\"${instruction.name}\" expects value to be a regular expression or a string that represents regular expression`);\n }\n },\n parse(instruction, rawValue, context) {\n const value = typeof rawValue === 'string'\n ? new RegExp(rawValue, context.query.$options || '')\n : rawValue;\n return new FieldCondition(instruction.name, context.field, value);\n }\n};\nexport const $options: FieldInstruction = {\n type: 'field',\n parse: () => NULL_CONDITION,\n};\n\nexport const $where: DocumentInstruction<() => boolean> = {\n type: 'document',\n validate: ensureIs('function'),\n};\n","import {\n Condition,\n buildAnd as and,\n ParsingInstruction,\n ObjectQueryParser,\n FieldQueryOperators,\n} from '@ucast/core';\nimport { MongoQuery } from './types';\n\nexport interface ParseOptions {\n field: string\n}\n\nexport class MongoQueryParser extends ObjectQueryParser> {\n constructor(instructions: Record) {\n super(instructions, {\n defaultOperatorName: '$eq',\n operatorToConditionName: name => name.slice(1),\n });\n }\n\n parse, FQ extends FieldQueryOperators = FieldQueryOperators>(\n query: Q | FQ,\n options?: ParseOptions\n ): Condition {\n if (options && options.field) {\n return and(this.parseFieldOperators(options.field, query as FQ));\n }\n\n return super.parse(query);\n }\n}\n","import {\n CompoundCondition as Compound,\n FieldCondition as Field,\n DocumentCondition as Document,\n Condition,\n Comparable,\n ITSELF,\n} from '@ucast/core';\nimport { JsInterpreter as Interpret } from './types';\nimport {\n includes,\n testValueOrArray,\n isArrayAndNotNumericField,\n AnyObject,\n} from './utils';\nimport { getObjectFieldCursor } from './interpreter';\n\nexport const or: Interpret = (node, object, { interpret }) => {\n return node.value.some(condition => interpret(condition, object));\n};\n\nexport const nor: typeof or = (node, object, context) => {\n return !or(node, object, context);\n};\n\nexport const and: Interpret = (node, object, { interpret }) => {\n return node.value.every(condition => interpret(condition, object));\n};\n\nexport const not: Interpret = (node, object, { interpret }) => {\n return !interpret(node.value[0], object);\n};\n\nexport const eq: Interpret = (node, object, { compare, get }) => {\n const value = get(object, node.field);\n\n if (Array.isArray(value) && !Array.isArray(node.value)) {\n return includes(value, node.value, compare);\n }\n\n return compare(value, node.value) === 0;\n};\n\nexport const ne: typeof eq = (node, object, context) => {\n return !eq(node, object, context);\n};\n\nexport const lte = testValueOrArray((node, value, context) => {\n const result = context.compare(value, node.value);\n return result === 0 || result === -1;\n});\n\nexport const lt = testValueOrArray((node, value, context) => {\n return context.compare(value, node.value) === -1;\n});\nexport const gt = testValueOrArray((node, value, context) => {\n return context.compare(value, node.value) === 1;\n});\nexport const gte = testValueOrArray((node, value, context) => {\n const result = context.compare(value, node.value);\n return result === 0 || result === 1;\n});\n\nexport const exists: Interpret> = (node, object, { get }) => {\n if (node.field === ITSELF) {\n return typeof object !== 'undefined';\n }\n\n const [item, field] = getObjectFieldCursor<{}>(object, node.field, get);\n const test = (value: {}) => !!value && value.hasOwnProperty(field) === node.value;\n\n return isArrayAndNotNumericField(item, field) ? item.some(test) : test(item);\n};\n\nexport const mod = testValueOrArray<[number, number], number>((node, value) => {\n return typeof value === 'number' && value % node.value[0] === node.value[1];\n});\n\nexport const size: Interpret, AnyObject | unknown[]> = (node, object, { get }) => {\n const [items, field] = getObjectFieldCursor(object as AnyObject, node.field, get);\n const test = (item: unknown) => {\n const value = get(item, field);\n return Array.isArray(value) && value.length === node.value;\n };\n\n return node.field !== ITSELF && isArrayAndNotNumericField(items, field)\n ? items.some(test)\n : test(items);\n};\n\nexport const regex = testValueOrArray((node, value) => {\n return typeof value === 'string' && node.value.test(value);\n});\n\nexport const within = testValueOrArray((node, object, { compare }) => {\n return includes(node.value, object, compare);\n});\n\nexport const nin: typeof within = (node, object, context) => !within(node, object, context);\n\nexport const all: Interpret> = (node, object, { compare, get }) => {\n const value = get(object, node.field);\n return Array.isArray(value) && node.value.every(v => includes(value, v, compare));\n};\n\nexport const elemMatch: Interpret> = (node, object, { interpret, get }) => {\n const value = get(object, node.field);\n return Array.isArray(value) && value.some(v => interpret(node.value, v));\n};\n\ntype WhereFunction = (this: AnyObject) => boolean;\nexport const where: Interpret, AnyObject> = (node, object) => {\n return node.value.call(object);\n};\n","import { createJsInterpreter } from './interpreter';\nimport * as interpreters from './interpreters';\n\nexport const allInterpreters = {\n ...interpreters,\n in: interpreters.within,\n};\nexport const interpret = createJsInterpreter(allInterpreters);\n","import { createElement as h, ComponentClass, Consumer, StatelessComponent } from 'react';\nimport { AnyAbility } from '@casl/ability';\nimport { Can, BoundCanProps } from './Can';\n\ninterface BoundCanClass extends ComponentClass> {\n new (props: BoundCanProps, context?: any): Can\n}\n\nexport function createCanBoundTo(ability: T): BoundCanClass {\n return class extends Can {\n static defaultProps = { ability } as BoundCanClass['defaultProps'];\n };\n}\n\nexport function createContextualCan(\n Getter: Consumer\n): StatelessComponent> {\n return (props: BoundCanProps) => h(Getter, null, (ability: T) => h(Can, {\n ability,\n ...props,\n } as any));\n}\n","import { Condition } from './Condition';\nimport { Parse } from './types';\nimport { AnyInterpreter } from './interpreter';\n\ntype Bound = T extends (first: Condition, ...args: infer A) => any\n ? { (...args: A): ReturnType, ast: Condition }\n : never;\n\nexport function createTranslatorFactory(\n parse: Parse,\n interpret: Interpreter\n) {\n return (query: Lang, ...args: unknown[]): Bound => {\n const ast = parse(query, ...args);\n const translate = (interpret as any).bind(null, ast);\n translate.ast = ast;\n return translate;\n };\n}\n","import { wrapArray, isSubjectType } from './utils';\nimport {\n MatchConditions,\n MatchField,\n Abilities,\n ToAbilityTypes,\n Normalize,\n ConditionsMatcher,\n FieldMatcher,\n} from './types';\nimport { RawRule, RawRuleFrom } from './RawRule';\n\ntype Tuple = Normalize>;\n\nfunction validate(rule: RawRuleFrom, options: RuleOptions) {\n if (Array.isArray(rule.fields) && !rule.fields.length) {\n throw new Error('`rawRule.fields` cannot be an empty array. https://bit.ly/390miLa');\n }\n\n if (rule.fields && !options.fieldMatcher) {\n throw new Error('You need to pass \"fieldMatcher\" option in order to restrict access by fields');\n }\n\n if (rule.conditions && !options.conditionsMatcher) {\n throw new Error('You need to pass \"conditionsMatcher\" option in order to restrict access by conditions');\n }\n}\n\nexport interface RuleOptions {\n conditionsMatcher?: ConditionsMatcher\n fieldMatcher?: FieldMatcher\n resolveAction(action: string | string[]): string | string[]\n}\n\nexport class Rule {\n private _matchConditions: MatchConditions | undefined;\n private _matchField: MatchField | undefined;\n private readonly _options!: RuleOptions;\n public readonly action!: Tuple[0] | Tuple[0][];\n public readonly subject!: Tuple[1] | Tuple[1][];\n public readonly inverted!: boolean;\n public readonly conditions!: C | undefined;\n public readonly fields!: string[] | undefined;\n public readonly reason!: string | undefined;\n public readonly priority!: number;\n\n constructor(\n rule: RawRule, C>,\n options: RuleOptions,\n priority: number = 0\n ) {\n validate(rule, options);\n\n this.action = options.resolveAction(rule.action);\n this.subject = rule.subject!;\n this.inverted = !!rule.inverted;\n this.conditions = rule.conditions;\n this.reason = rule.reason;\n this.fields = rule.fields ? wrapArray(rule.fields) : undefined;\n this.priority = priority;\n this._options = options;\n }\n\n private _conditionsMatcher() {\n if (this.conditions && !this._matchConditions) {\n this._matchConditions = this._options.conditionsMatcher!(this.conditions);\n }\n\n return this._matchConditions!;\n }\n\n get ast() {\n const matches = this._conditionsMatcher();\n return matches ? matches.ast : undefined;\n }\n\n matchesConditions(object: Normalize[1] | undefined): boolean {\n if (!this.conditions) {\n return true;\n }\n\n if (!object || isSubjectType(object)) {\n return !this.inverted;\n }\n\n const matches = this._conditionsMatcher();\n return matches(object as Record);\n }\n\n matchesField(field: string | undefined): boolean {\n if (!this.fields) {\n return true;\n }\n\n if (!field) {\n return !this.inverted;\n }\n\n if (this.fields && !this._matchField) {\n this._matchField = this._options.fieldMatcher!(this.fields);\n }\n\n return this._matchField!(field);\n }\n}\n","export interface LinkedItem {\n next: LinkedItem | null\n prev: LinkedItem | null\n readonly value: T\n}\n\nexport function linkedItem(value: T, prev: LinkedItem['prev']) {\n const item = { value, prev, next: null };\n\n if (prev) {\n prev.next = item;\n }\n\n return item;\n}\n\nexport function unlinkItem(item: LinkedItem) {\n if (item.next) {\n item.next.prev = item.prev;\n }\n\n if (item.prev) {\n item.prev.next = item.next;\n }\n\n item.next = item.prev = null; // eslint-disable-line\n}\n\nexport const cloneLinkedItem = >(item: T): T => ({\n value: item.value,\n prev: item.prev,\n next: item.next,\n} as T);\n","import { Rule, RuleOptions } from './Rule';\nimport { RawRuleFrom } from './RawRule';\nimport {\n Abilities,\n Normalize,\n SubjectType,\n AbilityParameters,\n AbilityTuple,\n ExtractSubjectType\n} from './types';\nimport { wrapArray, detectSubjectType, mergePrioritized, getOrDefault, identity, isSubjectType } from './utils';\nimport { LinkedItem, linkedItem, unlinkItem, cloneLinkedItem } from './structures/LinkedItem';\n\nexport interface RuleIndexOptions extends Partial> {\n detectSubjectType?(\n subject: Exclude[1], SubjectType>\n ): ExtractSubjectType[1]>;\n anyAction?: string;\n anySubjectType?: string;\n}\n\ndeclare const $abilities: unique symbol;\ndeclare const $conditions: unique symbol;\ninterface WithGenerics {\n [$abilities]: any\n [$conditions]: any\n}\nexport type Public = { [K in keyof T]: T[K] };\nexport interface Generics {\n abilities: T[typeof $abilities],\n conditions: T[typeof $conditions]\n}\n\nexport type RuleOf =\n Rule['abilities'], Generics['conditions']>;\nexport type RawRuleOf =\n RawRuleFrom['abilities'], Generics['conditions']>;\n\nexport type RuleIndexOptionsOf =\n RuleIndexOptions['abilities'], Generics['conditions']>;\n\ninterface AbilityEvent {\n target: T\n /** @deprecated use \"target\" property instead */\n ability: T\n}\n\nexport interface UpdateEvent extends AbilityEvent {\n rules: RawRuleOf[]\n}\n/**\n * @deprecated `on`/`emit` properly infer type without this type\n * TODO(major): delete\n */\nexport type EventHandler = (event: Event) => void;\n\nexport type Events<\n T extends WithGenerics,\n K extends keyof EventsMap = keyof EventsMap\n> = Map[K]> | null>;\n\ninterface EventsMap {\n update(event: UpdateEvent): void\n updated(event: UpdateEvent): void\n}\n\ntype IndexTree = Map[],\n merged: boolean\n}>>;\n\nexport type Unsubscribe = () => void;\n\nconst defaultActionEntry = () => ({\n rules: [] as unknown as Rule[],\n merged: false\n});\nconst defaultSubjectEntry = () => new Map>();\nconst analyze = (index: any, rule: Rule) => {\n if (!index._hasPerFieldRules && rule.fields) {\n index._hasPerFieldRules = true;\n }\n};\n\ntype AbilitySubjectTypeParameters =\n AbilityParameters<\n T,\n T extends AbilityTuple\n ? IncludeField extends true\n ? (action: T[0], subject: ExtractSubjectType, field?: string) => 0\n : (action: T[0], subject: ExtractSubjectType) => 0\n : never,\n (action: Extract) => 0\n >;\n\nexport class RuleIndex {\n private _hasPerFieldRules: boolean = false;\n private _events: Events = new Map();\n private _indexedRules!: IndexTree;\n private _rules!: RawRuleFrom[];\n private readonly _ruleOptions!: RuleOptions;\n private readonly _detectSubjectType!: Required>['detectSubjectType'];\n private readonly _anyAction: string;\n private readonly _anySubjectType: string;\n readonly [$abilities]!: A;\n readonly [$conditions]!: Conditions;\n\n constructor(\n rules: RawRuleFrom[] = [],\n options: RuleIndexOptions = {}\n ) {\n this._ruleOptions = {\n conditionsMatcher: options.conditionsMatcher,\n fieldMatcher: options.fieldMatcher,\n resolveAction: options.resolveAction || identity,\n };\n this._anyAction = options.anyAction || 'manage';\n this._anySubjectType = options.anySubjectType || 'all';\n this._detectSubjectType = options.detectSubjectType || detectSubjectType;\n this._rules = rules;\n this._indexedRules = this._buildIndexFor(rules);\n }\n\n get rules() {\n return this._rules;\n }\n\n detectSubjectType(object?: Normalize[1]): ExtractSubjectType[1]> {\n if (isSubjectType(object)) return object;\n if (!object) return this._anySubjectType;\n return this._detectSubjectType(object as Exclude[1], SubjectType>);\n }\n\n update(rules: RawRuleFrom[]): Public {\n const event = {\n rules,\n ability: this,\n target: this\n } as unknown as UpdateEvent;\n\n this._emit('update', event);\n this._rules = rules;\n this._indexedRules = this._buildIndexFor(rules);\n this._emit('updated', event);\n\n return this;\n }\n\n private _buildIndexFor(rawRules: RawRuleFrom[]) {\n const indexedRules: IndexTree = new Map();\n\n for (let i = rawRules.length - 1; i >= 0; i--) {\n const priority = rawRules.length - i - 1;\n const rule = new Rule(rawRules[i], this._ruleOptions, priority);\n const actions = wrapArray(rule.action);\n const subjects = wrapArray(rule.subject || this._anySubjectType);\n analyze(this, rule);\n\n for (let k = 0; k < subjects.length; k++) {\n const subjectRules = getOrDefault(indexedRules, subjects[k], defaultSubjectEntry);\n\n for (let j = 0; j < actions.length; j++) {\n getOrDefault(subjectRules, actions[j], defaultActionEntry).rules.push(rule);\n }\n }\n }\n\n return indexedRules;\n }\n\n possibleRulesFor(...args: AbilitySubjectTypeParameters): Rule[]\n possibleRulesFor(\n action: string,\n subjectType: SubjectType = this._anySubjectType\n ): Rule[] {\n if (!isSubjectType(subjectType)) {\n throw new Error('\"possibleRulesFor\" accepts only subject types (i.e., string or class) as the 2nd parameter');\n }\n\n const subjectRules = getOrDefault(this._indexedRules, subjectType, defaultSubjectEntry);\n const actionRules = getOrDefault(subjectRules, action, defaultActionEntry);\n\n if (actionRules.merged) {\n return actionRules.rules;\n }\n\n const anyActionRules = action !== this._anyAction && subjectRules.has(this._anyAction)\n ? subjectRules.get(this._anyAction)!.rules\n : undefined;\n let rules = mergePrioritized(actionRules.rules, anyActionRules);\n\n if (subjectType !== this._anySubjectType) {\n rules = mergePrioritized(rules, (this as any).possibleRulesFor(action, this._anySubjectType));\n }\n\n actionRules.rules = rules;\n actionRules.merged = true;\n\n return rules;\n }\n\n rulesFor(...args: AbilitySubjectTypeParameters): Rule[]\n rulesFor(action: string, subjectType?: SubjectType, field?: string): Rule[] {\n const rules: Rule[] = (this as any).possibleRulesFor(action, subjectType);\n\n if (field && typeof field !== 'string') {\n throw new Error('The 3rd, `field` parameter is expected to be a string. See https://stalniy.github.io/casl/en/api/casl-ability#can-of-pure-ability for details');\n }\n\n if (!this._hasPerFieldRules) {\n return rules;\n }\n\n return rules.filter(rule => rule.matchesField(field));\n }\n\n on>(\n event: T,\n handler: EventsMap>[T]\n ): Unsubscribe {\n const tail = this._events.get(event) || null;\n const item = linkedItem(handler, tail);\n this._events.set(event, item);\n\n return () => {\n const currentTail = this._events.get(event);\n\n if (!item.next && !item.prev && currentTail === item) {\n this._events.delete(event);\n } else if (item === currentTail) {\n this._events.set(event, item.prev);\n }\n\n unlinkItem(item);\n };\n }\n\n private _emit>(\n name: T,\n payload: Parameters[T]>[0]\n ) {\n let current = this._events.get(name) || null;\n while (current !== null) {\n const prev = current.prev ? cloneLinkedItem(current.prev) : null;\n current.value(payload);\n current = prev;\n }\n }\n}\n","import { RuleIndex, RuleIndexOptions, RuleIndexOptionsOf, Public, RawRuleOf } from './RuleIndex';\nimport { Abilities, AbilityTuple, CanParameters, Subject } from './types';\nimport { Rule } from './Rule';\n\nexport interface AbilityOptions\n extends RuleIndexOptions {}\nexport interface AnyAbility extends Public> {}\nexport interface AbilityOptionsOf extends RuleIndexOptionsOf {}\nexport type AbilityClass = new (\n rules?: RawRuleOf[],\n options?: AbilityOptionsOf\n) => T;\n\nexport class PureAbility<\n A extends Abilities = AbilityTuple,\n Conditions = unknown\n> extends RuleIndex {\n can(...args: CanParameters): boolean {\n const rule = this.relevantRuleFor(...args);\n return !!rule && !rule.inverted;\n }\n\n relevantRuleFor(...args: CanParameters): Rule | null\n relevantRuleFor(action: string, subject?: Subject, field?: string): Rule | null {\n const subjectType = this.detectSubjectType(subject);\n const rules = (this as any).rulesFor(action, subjectType, field);\n\n for (let i = 0, length = rules.length; i < length; i++) {\n if (rules[i].matchesConditions(subject)) {\n return rules[i];\n }\n }\n\n return null;\n }\n\n cannot(...args: CanParameters): boolean {\n return !this.can(...args);\n }\n}\n","import {\n $eq,\n eq,\n $ne,\n ne,\n $lt,\n lt,\n $lte,\n lte,\n $gt,\n gt,\n $gte,\n gte,\n $in,\n within,\n $nin,\n nin,\n $all,\n all,\n $size,\n size,\n $regex,\n $options,\n regex,\n $elemMatch,\n elemMatch,\n $exists,\n exists,\n and,\n createFactory,\n BuildMongoQuery,\n DefaultOperators,\n} from '@ucast/mongo2js';\nimport { ConditionsMatcher, AnyObject } from '../types';\nimport { Container, GenericFactory } from '../hkt';\n\nconst defaultInstructions = {\n $eq,\n $ne,\n $lt,\n $lte,\n $gt,\n $gte,\n $in,\n $nin,\n $all,\n $size,\n $regex,\n $options,\n $elemMatch,\n $exists,\n};\nconst defaultInterpreters = {\n eq,\n ne,\n lt,\n lte,\n gt,\n gte,\n in: within,\n nin,\n all,\n size,\n regex,\n elemMatch,\n exists,\n and,\n};\n\ninterface MongoQueryFactory extends GenericFactory {\n produce: MongoQuery\n}\n\ntype MergeUnion = { [K in Keys]: T[K] };\nexport type MongoQuery = BuildMongoQuery, {\n toplevel: {},\n field: Pick>['field'], keyof typeof defaultInstructions>\n}> & Container;\n\ntype MongoQueryMatcherFactory =\n (...args: Partial>) => ConditionsMatcher;\nexport const buildMongoQueryMatcher = ((instructions, interpreters, options) => createFactory(\n { ...defaultInstructions, ...instructions },\n { ...defaultInterpreters, ...interpreters },\n options\n)) as MongoQueryMatcherFactory;\n\nexport const mongoQueryMatcher = createFactory(defaultInstructions, defaultInterpreters);\nexport type {\n MongoQueryFieldOperators,\n MongoQueryTopLevelOperators,\n MongoQueryOperators,\n} from '@ucast/mongo2js';\n","import { FieldMatcher } from '../types';\n\nconst REGEXP_SPECIAL_CHARS = /[-/\\\\^$+?.()|[\\]{}]/g;\nconst REGEXP_ANY = /\\.?\\*+\\.?/g;\nconst REGEXP_STARS = /\\*+/;\nconst REGEXP_DOT = /\\./g;\n\nfunction detectRegexpPattern(match: string, index: number, string: string): string {\n const quantifier = string[0] === '*' || match[0] === '.' && match[match.length - 1] === '.'\n ? '+'\n : '*';\n const matcher = match.indexOf('**') === -1 ? '[^.]' : '.';\n const pattern = match.replace(REGEXP_DOT, '\\\\$&')\n .replace(REGEXP_STARS, matcher + quantifier);\n\n return index + match.length === string.length ? `(?:${pattern})?` : pattern;\n}\n\nfunction escapeRegexp(match: string, index: number, string: string): string {\n if (match === '.' && (string[index - 1] === '*' || string[index + 1] === '*')) {\n return match;\n }\n\n return `\\\\${match}`;\n}\n\nfunction createPattern(fields: string[]) {\n const patterns = fields.map(field => field\n .replace(REGEXP_SPECIAL_CHARS, escapeRegexp)\n .replace(REGEXP_ANY, detectRegexpPattern));\n const pattern = patterns.length > 1 ? `(?:${patterns.join('|')})` : patterns[0];\n\n return new RegExp(`^${pattern}$`);\n}\n\nexport const fieldPatternMatcher: FieldMatcher = (fields) => {\n let pattern: RegExp | null;\n\n return (field) => {\n if (typeof pattern === 'undefined') {\n pattern = fields.every(f => f.indexOf('*') === -1)\n ? null\n : createPattern(fields);\n }\n\n return pattern === null\n ? fields.indexOf(field) !== -1\n : pattern.test(field);\n };\n};\n","import { PureAbility, AbilityOptions } from './PureAbility';\nimport { RawRuleFrom } from './RawRule';\nimport { AbilityTuple } from './types';\nimport { MongoQuery, mongoQueryMatcher } from './matchers/conditions';\nimport { fieldPatternMatcher } from './matchers/field';\nimport { Public } from './RuleIndex';\n\nexport class Ability<\n A extends AbilityTuple = AbilityTuple,\n C extends MongoQuery = MongoQuery\n> extends PureAbility {\n constructor(rules: RawRuleFrom[] = [], options: AbilityOptions = {}) {\n super(rules, {\n conditionsMatcher: mongoQueryMatcher,\n fieldMatcher: fieldPatternMatcher,\n ...options,\n });\n }\n}\n\nexport interface AnyMongoAbility extends Public> {}\n","import { Ability, AnyMongoAbility } from './Ability';\nimport { AnyAbility, AbilityOptionsOf, AbilityClass } from './PureAbility';\nimport { RawRuleOf, Generics } from './RuleIndex';\nimport {\n ExtractSubjectType as E,\n AbilityTuple,\n SubjectType,\n TaggedInterface,\n Normalize,\n AnyObject,\n AnyClass,\n} from './types';\nimport { ProduceGeneric } from './hkt';\n\nclass RuleBuilder {\n public _rule!: RawRuleOf;\n\n constructor(rule: RawRuleOf) {\n this._rule = rule;\n }\n\n because(reason: string): this {\n this._rule.reason = reason;\n return this;\n }\n}\n\ntype InstanceOf = S extends AnyClass\n ? R\n : S extends string\n ? Exclude['abilities']>[1], SubjectType> extends TaggedInterface\n ? Extract['abilities']>[1], TaggedInterface>\n : AnyObject\n : never;\ntype ConditionsOf =\n ProduceGeneric['conditions'], I>;\ntype ActionFrom = T extends any\n ? S extends T[1] ? T[0] : never\n : never;\ntype ActionOf = ActionFrom['abilities'], S>;\ntype SubjectTypeOf = E['abilities']>[1]>;\n\ntype SimpleCanParams = Parameters<(\n action: Generics['abilities'] | Generics['abilities'][]\n) => 0>;\ntype BuilderCanParameters<\n S extends SubjectType,\n I extends InstanceOf,\n T extends AnyAbility\n> = Generics['abilities'] extends AbilityTuple\n ? Parameters<(\n action: ActionOf | ActionOf[],\n subject: S | S[],\n conditions?: ConditionsOf\n ) => 0>\n : SimpleCanParams;\n\ntype BuilderCanParametersWithFields<\n S extends SubjectType,\n I extends InstanceOf,\n F extends string,\n T extends AnyAbility\n> = Generics['abilities'] extends AbilityTuple\n ? Parameters<(\n action: ActionOf | ActionOf[],\n subject: S | S[],\n fields?: F | F[],\n conditions?: ConditionsOf\n ) => 0>\n : SimpleCanParams;\ntype Keys = string & keyof T;\n\nexport class AbilityBuilder {\n public rules: RawRuleOf[] = [];\n private _AbilityType!: AnyClass;\n\n constructor(AbilityType: AnyClass) {\n this._AbilityType = AbilityType;\n this.can = this.can.bind(this as any);\n this.cannot = this.cannot.bind(this as any);\n this.build = this.build.bind(this as any);\n }\n\n can<\n I extends InstanceOf,\n S extends SubjectTypeOf = SubjectTypeOf\n >(...args: BuilderCanParameters): RuleBuilder\n can<\n I extends InstanceOf,\n F extends string = Keys,\n S extends SubjectTypeOf = SubjectTypeOf\n >(...args: BuilderCanParametersWithFields, T>): RuleBuilder\n can(\n action: string | string[],\n subject?: SubjectType | SubjectType[],\n conditionsOrFields?: string | string[] | Generics['conditions'],\n conditions?: Generics['conditions']\n ): RuleBuilder {\n const rule = { action } as RawRuleOf;\n\n if (subject) {\n rule.subject = subject;\n\n if (Array.isArray(conditionsOrFields) || typeof conditionsOrFields === 'string') {\n rule.fields = conditionsOrFields;\n } else if (typeof conditionsOrFields !== 'undefined') {\n rule.conditions = conditionsOrFields;\n }\n\n if (typeof conditions !== 'undefined') {\n rule.conditions = conditions;\n }\n }\n\n this.rules.push(rule);\n\n return new RuleBuilder(rule);\n }\n\n cannot<\n I extends InstanceOf,\n S extends SubjectTypeOf = SubjectTypeOf\n >(...args: BuilderCanParameters): RuleBuilder\n cannot<\n I extends InstanceOf,\n F extends string = Keys,\n S extends SubjectTypeOf = SubjectTypeOf\n >(...args: BuilderCanParametersWithFields, T>): RuleBuilder\n cannot(\n action: string | string[],\n subject?: SubjectType | SubjectType[],\n conditionsOrFields?: string | string[] | Generics['conditions'],\n conditions?: Generics['conditions'],\n ): RuleBuilder {\n const builder = (this as any).can(action, subject, conditionsOrFields, conditions);\n builder._rule.inverted = true;\n return builder;\n }\n\n build(options?: AbilityOptionsOf) {\n return new this._AbilityType(this.rules, options);\n }\n}\n\ntype DSL = (\n can: AbilityBuilder['can'],\n cannot: AbilityBuilder['cannot']\n) => R;\n\nexport function defineAbility<\n T extends AnyMongoAbility\n>(define: DSL>, options?: AbilityOptionsOf): Promise;\nexport function defineAbility<\n T extends AnyMongoAbility\n>(define: DSL, options?: AbilityOptionsOf): T;\nexport function defineAbility<\n T extends AnyMongoAbility\n>(define: DSL>, options?: AbilityOptionsOf): T | Promise {\n const builder = new AbilityBuilder(Ability as unknown as AbilityClass);\n const result = define(builder.can, builder.cannot);\n\n if (result && typeof result.then === 'function') {\n return result.then(() => builder.build(options));\n }\n\n return builder.build(options);\n}\n","import { AnyAbility } from './PureAbility';\nimport { Normalize } from './types';\nimport { Generics } from './RuleIndex';\nimport { getSubjectTypeName } from './utils';\n\nexport type GetErrorMessage = (error: ForbiddenError) => string;\nexport const getDefaultErrorMessage: GetErrorMessage = error => `Cannot execute \"${error.action}\" on \"${error.subjectType}\"`;\n\nconst NativeError = function NError(this: Error, message: string) {\n this.message = message;\n} as unknown as new (message: string) => Error;\n\nNativeError.prototype = Object.create(Error.prototype);\n\nexport class ForbiddenError extends NativeError {\n public readonly ability!: T;\n public action!: Normalize['abilities']>[0];\n public subject!: Generics['abilities'][1];\n public field?: string;\n public subjectType!: string;\n\n static _defaultErrorMessage = getDefaultErrorMessage;\n\n static setDefaultMessage(messageOrFn: string | GetErrorMessage) {\n this._defaultErrorMessage = typeof messageOrFn === 'string' ? () => messageOrFn : messageOrFn;\n }\n\n static from(ability: U) {\n return new this(ability);\n }\n\n private constructor(ability: T) {\n super('');\n this.ability = ability;\n\n if (typeof Error.captureStackTrace === 'function') {\n this.name = 'ForbiddenError';\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n setMessage(message: string) {\n this.message = message;\n return this;\n }\n\n throwUnlessCan(...args: Parameters) {\n const rule = this.ability.relevantRuleFor(...args);\n\n if (rule && !rule.inverted) {\n return;\n }\n\n this.action = args[0];\n this.subject = args[1];\n this.subjectType = getSubjectTypeName(this.ability.detectSubjectType(args[1]));\n this.field = args[2];\n\n const reason = rule ? rule.reason : '';\n // eslint-disable-next-line no-underscore-dangle\n this.message = this.message || reason || (this.constructor as any)._defaultErrorMessage(this);\n throw this; // eslint-disable-line\n }\n}\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","/* globals webkitAudioContext, AudioContext */\n'use strict';\nvar NativeAudioContext = typeof AudioContext !== 'undefined'\n ? AudioContext\n : typeof webkitAudioContext !== 'undefined'\n ? webkitAudioContext\n : null;\n/**\n * @interface AudioContextFactoryOptions\n * @property {AudioContext} [AudioContext] - The AudioContext constructor\n */\n/**\n * {@link AudioContextFactory} ensures we construct at most one AudioContext\n * at a time, and that it is eventually closed when we no longer need it.\n * @property {AudioContextFactory} AudioContextFactory - The\n * {@link AudioContextFactory} constructor\n */\nvar AudioContextFactory = /** @class */ (function () {\n /**\n * @param {AudioContextFactoryOptions} [options]\n */\n function AudioContextFactory(options) {\n options = Object.assign({\n AudioContext: NativeAudioContext\n }, options);\n Object.defineProperties(this, {\n _AudioContext: {\n value: options.AudioContext\n },\n _audioContext: {\n value: null,\n writable: true\n },\n _holders: {\n value: new Set()\n },\n AudioContextFactory: {\n enumerable: true,\n value: AudioContextFactory\n }\n });\n }\n /**\n * Each call to {@link AudioContextFactory#getOrCreate} should be paired with a\n * call to {@link AudioContextFactory#release}. Calling this increments an\n * internal reference count.\n * @param {*} holder - The object to hold a reference to the AudioContext\n * @returns {?AudioContext}\n */\n AudioContextFactory.prototype.getOrCreate = function (holder) {\n if (!this._holders.has(holder)) {\n this._holders.add(holder);\n if (this._AudioContext && !this._audioContext) {\n try {\n this._audioContext = new this._AudioContext();\n }\n catch (error) {\n // Do nothing;\n }\n }\n }\n return this._audioContext;\n };\n /**\n * Decrement the internal reference count. If it reaches zero, close and destroy\n * the AudioContext.\n * @param {*} holder - The object that held a reference to the AudioContext\n * @returns {void}\n */\n AudioContextFactory.prototype.release = function (holder) {\n if (this._holders.has(holder)) {\n this._holders.delete(holder);\n if (!this._holders.size && this._audioContext) {\n this._audioContext.close();\n this._audioContext = null;\n }\n }\n };\n return AudioContextFactory;\n}());\nmodule.exports = new AudioContextFactory();\n//# sourceMappingURL=audiocontext.js.map","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n var entry;\n return {\n get: function get(key) {\n if (entry && equals(entry.key, key)) {\n return entry.value;\n }\n\n return NOT_FOUND;\n },\n put: function put(key, value) {\n entry = {\n key: key,\n value: value\n };\n },\n getEntries: function getEntries() {\n return entry ? [entry] : [];\n },\n clear: function clear() {\n entry = undefined;\n }\n };\n}\n\nfunction createLruCache(maxSize, equals) {\n var entries = [];\n\n function get(key) {\n var cacheIndex = entries.findIndex(function (entry) {\n return equals(key, entry.key);\n }); // We found a cached entry\n\n if (cacheIndex > -1) {\n var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n if (cacheIndex > 0) {\n entries.splice(cacheIndex, 1);\n entries.unshift(entry);\n }\n\n return entry.value;\n } // No entry found in cache, return sentinel\n\n\n return NOT_FOUND;\n }\n\n function put(key, value) {\n if (get(key) === NOT_FOUND) {\n // TODO Is unshift slow?\n entries.unshift({\n key: key,\n value: value\n });\n\n if (entries.length > maxSize) {\n entries.pop();\n }\n }\n }\n\n function getEntries() {\n return entries;\n }\n\n function clear() {\n entries = [];\n }\n\n return {\n get: get,\n put: put,\n getEntries: getEntries,\n clear: clear\n };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n return function areArgumentsShallowlyEqual(prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n var length = prev.length;\n\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n equalityCheck: equalityCheckOrOptions\n };\n var _providedOptions$equa = providedOptions.equalityCheck,\n equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n _providedOptions$maxS = providedOptions.maxSize,\n maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n resultEqualityCheck = providedOptions.resultEqualityCheck;\n var comparator = createCacheKeyComparator(equalityCheck);\n var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n function memoized() {\n var value = cache.get(arguments);\n\n if (value === NOT_FOUND) {\n // @ts-ignore\n value = func.apply(null, arguments);\n\n if (resultEqualityCheck) {\n var entries = cache.getEntries();\n var matchingEntry = entries.find(function (entry) {\n return resultEqualityCheck(entry.value, value);\n });\n\n if (matchingEntry) {\n value = matchingEntry.value;\n }\n }\n\n cache.put(arguments, value);\n }\n\n return value;\n }\n\n memoized.clearCache = function () {\n return cache.clear();\n };\n\n return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n }).join(', ');\n throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n }\n\n var createSelector = function createSelector() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var _recomputations = 0;\n\n var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n // So, start by declaring the default value here.\n // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n var directlyPassedOptions = {\n memoizeOptions: undefined\n }; // Normally, the result func or \"output selector\" is the last arg\n\n var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n if (typeof resultFunc === 'object') {\n directlyPassedOptions = resultFunc; // and pop the real result func off\n\n resultFunc = funcs.pop();\n }\n\n if (typeof resultFunc !== 'function') {\n throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n } // Determine which set of options we're using. Prefer options passed directly,\n // but fall back to options given to createSelectorCreator.\n\n\n var _directlyPassedOption = directlyPassedOptions,\n _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n // is an array. In most libs I've looked at, it's an equality function or options object.\n // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n // we wrap it in an array so we can apply it.\n\n var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n var dependencies = getDependencies(funcs);\n var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n _recomputations++; // apply arguments instead of spreading for performance.\n\n return resultFunc.apply(null, arguments);\n }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n var selector = memoize(function dependenciesChecker() {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n // @ts-ignore\n params.push(dependencies[i].apply(null, arguments));\n } // apply arguments instead of spreading for performance.\n\n\n _lastResult = memoizedResultFunc.apply(null, params);\n return _lastResult;\n });\n Object.assign(selector, {\n resultFunc: resultFunc,\n memoizedResultFunc: memoizedResultFunc,\n dependencies: dependencies,\n lastResult: function lastResult() {\n return _lastResult;\n },\n recomputations: function recomputations() {\n return _recomputations;\n },\n resetRecomputations: function resetRecomputations() {\n return _recomputations = 0;\n }\n });\n return selector;\n }; // @ts-ignore\n\n\n return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n if (selectorCreator === void 0) {\n selectorCreator = createSelector;\n }\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n }\n\n var objectKeys = Object.keys(selectors);\n var resultSelector = selectorCreator( // @ts-ignore\n objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n return resultSelector;\n};","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n}\n\nmodule.exports = mapValues;\n","'use strict';\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar createlocaltracks_1 = require(\"./createlocaltracks\");\nvar preflighttest_1 = require(\"./preflight/preflighttest\");\nvar internals = {\n connect: require('./connect'),\n createLocalAudioTrack: require('./createlocaltrack').audio,\n createLocalVideoTrack: require('./createlocaltrack').video,\n isSupported: require('./util/support')(),\n version: require('../package.json').version,\n Logger: require('./vendor/loglevel'),\n LocalAudioTrack: require('./media/track/es5').LocalAudioTrack,\n LocalDataTrack: require('./media/track/es5').LocalDataTrack,\n LocalVideoTrack: require('./media/track/es5').LocalVideoTrack\n};\nfunction connect(token, options) {\n var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n return internals.connect(token, internalOptions);\n}\nfunction createLocalAudioTrack(options) {\n var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n return internals.createLocalAudioTrack(internalOptions);\n}\nfunction createLocalVideoTrack(options) {\n var internalOptions = __assign({ createLocalTracks: createlocaltracks_1.createLocalTracks }, options);\n return internals.createLocalVideoTrack(internalOptions);\n}\n/**\n * @module twilio-video\n * @property {boolean} isSupported - true if the current browser is officially\n * supported by twilio-video.js; In this context, \"supported\" means that\n * twilio-video.js has been extensively tested with this browser; This\n * table\n * specifies the list of officially supported browsers.\n *\n * @property {object} Logger - The loglevel\n * module used by the SDK. Use this object to access the internal loggers and perform actions as defined by the\n * loglevel APIs.\n * See [connect](#.connect) for examples.\n *\n * @property {string} version - current version of twilio-video.js.\n */\nvar isSupported = internals.isSupported;\nvar version = internals.version;\nvar Logger = internals.Logger;\nvar LocalAudioTrack = internals.LocalAudioTrack;\nvar LocalVideoTrack = internals.LocalVideoTrack;\nvar LocalDataTrack = internals.LocalDataTrack;\nmodule.exports = {\n connect: connect,\n createLocalAudioTrack: createLocalAudioTrack,\n createLocalVideoTrack: createLocalVideoTrack,\n createLocalTracks: createlocaltracks_1.createLocalTracks,\n runPreflight: preflighttest_1.runPreflight,\n isSupported: isSupported,\n version: version,\n Logger: Logger,\n LocalAudioTrack: LocalAudioTrack,\n LocalVideoTrack: LocalVideoTrack,\n LocalDataTrack: LocalDataTrack,\n};\n//# sourceMappingURL=index.js.map","import * as React from 'react';\nexport var ManagerReferenceNodeContext = React.createContext();\nexport var ManagerReferenceNodeSetterContext = React.createContext();\nexport function Manager(_ref) {\n var children = _ref.children;\n\n var _React$useState = React.useState(null),\n referenceNode = _React$useState[0],\n setReferenceNode = _React$useState[1];\n\n var hasUnmounted = React.useRef(false);\n React.useEffect(function () {\n return function () {\n hasUnmounted.current = true;\n };\n }, []);\n var handleSetReferenceNode = React.useCallback(function (node) {\n if (!hasUnmounted.current) {\n setReferenceNode(node);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n value: referenceNode\n }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: handleSetReferenceNode\n }, children));\n}","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\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 return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef } from './utils';\nimport { usePopper } from './usePopper';\n\nvar NOOP = function NOOP() {\n return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\nexport function Popper(_ref) {\n var _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n _ref$strategy = _ref.strategy,\n strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n referenceElement = _ref.referenceElement,\n onFirstUpdate = _ref.onFirstUpdate,\n innerRef = _ref.innerRef,\n children = _ref.children;\n var referenceNode = React.useContext(ManagerReferenceNodeContext);\n\n var _React$useState = React.useState(null),\n popperElement = _React$useState[0],\n setPopperElement = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n arrowElement = _React$useState2[0],\n setArrowElement = _React$useState2[1];\n\n React.useEffect(function () {\n setRef(innerRef, popperElement);\n }, [innerRef, popperElement]);\n var options = React.useMemo(function () {\n return {\n placement: placement,\n strategy: strategy,\n onFirstUpdate: onFirstUpdate,\n modifiers: [].concat(modifiers, [{\n name: 'arrow',\n enabled: arrowElement != null,\n options: {\n element: arrowElement\n }\n }])\n };\n }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options),\n state = _usePopper.state,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate,\n update = _usePopper.update;\n\n var childrenProps = React.useMemo(function () {\n return {\n ref: setPopperElement,\n style: styles.popper,\n placement: state ? state.placement : placement,\n hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n arrowProps: {\n style: styles.arrow,\n ref: setArrowElement\n },\n forceUpdate: forceUpdate || NOOP,\n update: update || NOOP_PROMISE\n };\n }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n return unwrapArray(children)(childrenProps);\n}","import * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\nexport function Reference(_ref) {\n var children = _ref.children,\n innerRef = _ref.innerRef;\n var setReferenceNode = React.useContext(ManagerReferenceNodeSetterContext);\n var refHandler = React.useCallback(function (node) {\n setRef(innerRef, node);\n safeInvoke(setReferenceNode, node);\n }, [innerRef, setReferenceNode]); // ran on unmount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n\n React.useEffect(function () {\n return function () {\n return setRef(innerRef, null);\n };\n }, []);\n React.useEffect(function () {\n warning(Boolean(setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n }, [setReferenceNode]);\n return unwrapArray(children)({\n ref: refHandler\n });\n}","import PropTypes from 'prop-types';\n\n// https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\nexport function getScrollbarWidth() {\n let scrollDiv = document.createElement('div');\n // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\n\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? `${padding}px` : null;\n}\n\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\n\nexport function getOriginalBodyPadding() {\n const style = window.getComputedStyle(document.body, null);\n\n return parseInt((style && style.getPropertyValue('padding-right')) || 0, 10);\n}\n\nexport function conditionallyUpdateScrollbar() {\n const scrollbarWidth = getScrollbarWidth();\n // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n const fixedContent = document.querySelectorAll(\n '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\n )[0];\n const bodyPadding = fixedContent\n ? parseInt(fixedContent.style.paddingRight || 0, 10)\n : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\n\nlet globalCssModule;\n\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\n\nexport function mapToCssModules(className = '', cssModule = globalCssModule) {\n if (!cssModule) return className;\n return className\n .split(' ')\n .map(c => cssModule[c] || c)\n .join(' ');\n}\n\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\nexport function omit(obj, omitKeys) {\n const result = {};\n Object.keys(obj).forEach(key => {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\nexport function pick(obj, keys) {\n const pickKeys = Array.isArray(keys) ? keys : [keys];\n let length = pickKeys.length;\n let key;\n const result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n return result;\n}\n\nlet warned = {};\n\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n warned[message] = true;\n }\n}\n\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName, ...rest) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\n `\"${propName}\" property of \"${componentName}\" has been deprecated.\\n${explanation}`\n );\n }\n\n return propType(props, propName, componentName, ...rest);\n };\n}\n\n// Shim Element if needed (e.g. in Node environment)\nconst Element = (typeof window === 'object' && window.Element) || function() {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error(\n 'Invalid prop `' +\n propName +\n '` supplied to `' +\n componentName +\n '`. Expected prop to be an instance of Element. Validation failed.'\n );\n }\n}\n\nexport const targetPropType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n DOMElement,\n PropTypes.shape({ current: PropTypes.any }),\n]);\n\nexport const tagPropType = PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.shape({ $$typeof: PropTypes.symbol, render: PropTypes.func }),\n PropTypes.arrayOf(PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.shape({ $$typeof: PropTypes.symbol, render: PropTypes.func }),\n ]))\n]);\n\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\nexport const TransitionTimeouts = {\n Fade: 150, // $transition-fade\n Collapse: 350, // $transition-collapse\n Modal: 300, // $modal-transition\n Carousel: 600, // $carousel-transition\n Offcanvas: 300, // $offcanvas-transition\n};\n\n// Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\nexport const TransitionPropTypeKeys = [\n 'in',\n 'mountOnEnter',\n 'unmountOnExit',\n 'appear',\n 'enter',\n 'exit',\n 'timeout',\n 'onEnter',\n 'onEntering',\n 'onEntered',\n 'onExit',\n 'onExiting',\n 'onExited',\n];\n\nexport const TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited',\n};\n\nexport const keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80,\n};\n\nexport const PopperPlacements = [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n\nexport const canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n return false;\n}\n\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]'\n }\n return Object.prototype.toString.call(value)\n}\n\nexport function toNumber(value) {\n const type = typeof value;\n const NAN = 0 / 0;\n if (type === 'number') {\n return value\n }\n if (type === 'symbol' || (type === 'object' && getTag(value) === '[object Symbol]')) {\n return NAN\n }\n if (isObject(value)) {\n const other = typeof value.valueOf === 'function' ? value.valueOf() : value;\n value = isObject(other) ? `${other}` : other\n }\n if (type !== 'string') {\n return value === 0 ? value : +value\n }\n value = value.replace(/^\\s+|\\s+$/g, '');\n const isBinary = /^0b[01]+$/i.test(value);\n return (isBinary || /^0o[0-7]+$/i.test(value))\n ? parseInt(value.slice(2), isBinary ? 2 : 8)\n : (/^[-+]0x[0-9a-f]+$/i.test(value) ? NAN : +value)\n}\n\nexport function isObject(value) {\n const type = typeof value;\n return value != null && (type === 'object' || type === 'function')\n}\n\nexport function isFunction(value) {\n if (!isObject(value)) {\n return false\n }\n\n const tag = getTag(value);\n return tag === '[object Function]' || tag === '[object AsyncFunction]' ||\n tag === '[object GeneratorFunction]' || tag === '[object Proxy]'\n}\n\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n if (isFunction(target)) {\n return target();\n }\n if (typeof target === 'string' && canUseDOM) {\n let selection = document.querySelectorAll(target);\n if (!selection.length) {\n selection = document.querySelectorAll(`#${target}`);\n }\n if (!selection.length) {\n throw new Error(\n `The target '${target}' could not be identified in the dom, tip: check spelling`\n );\n }\n return selection;\n }\n return target;\n}\n\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n return Array.isArray(els) || (canUseDOM && typeof els.length === 'number');\n}\n\nexport function getTarget(target, allElements) {\n const els = findDOMElements(target);\n if (allElements) {\n if (isArrayOrNodeList(els)) {\n return els;\n }\n if (els === null) {\n return [];\n }\n return [els];\n } else {\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n return els;\n }\n}\n\nexport const defaultToggleEvents = ['touchstart', 'click'];\n\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n let els = _els;\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n let events = _events;\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (\n !isArrayOrNodeList(els) ||\n typeof handler !== 'function' ||\n !Array.isArray(events)\n ) {\n throw new Error(`\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\n The second must be a function.\n The third is a string or an array of strings that represents DOM events\n `);\n }\n\n Array.prototype.forEach.call(events, event => {\n Array.prototype.forEach.call(els, el => {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, event => {\n Array.prototype.forEach.call(els, el => {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\n\nexport const focusableElements = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'object',\n 'embed',\n '[tabindex]:not(.modal)',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n];\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n fluid: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div',\n};\n\nconst Container = (props) => {\n const {\n className,\n cssModule,\n fluid,\n tag: Tag,\n ...attributes\n } = props;\n\n let containerClass = 'container';\n if (fluid === true) {\n containerClass = 'container-fluid';\n }\n else if (fluid) {\n containerClass = `container-${fluid}`;\n }\n\n const classes = mapToCssModules(classNames(\n className,\n containerClass\n ), cssModule);\n\n return (\n \n );\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\n\nexport default Container;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, deprecated } from './utils';\n\nconst rowColWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nconst rowColsPropType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\n\nconst propTypes = {\n tag: tagPropType,\n noGutters: deprecated(PropTypes.bool, \"Please use Bootstrap 5 gutter utility classes. https://getbootstrap.com/docs/5.0/layout/gutters/\"),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n form: PropTypes.bool,\n xs: rowColsPropType,\n sm: rowColsPropType,\n md: rowColsPropType,\n lg: rowColsPropType,\n xl: rowColsPropType,\n xxl: rowColsPropType\n};\n\nconst defaultProps = {\n tag: 'div',\n widths: rowColWidths\n};\n\nconst Row = (props) => {\n const {\n className,\n cssModule,\n noGutters,\n tag: Tag,\n form,\n widths,\n ...attributes\n } = props;\n\n const colClasses = [];\n\n widths.forEach((colWidth, i) => {\n let colSize = props[colWidth];\n\n delete attributes[colWidth];\n\n if (!colSize) {\n return;\n }\n\n const isXs = !i;\n colClasses.push(isXs ? `row-cols-${colSize}` : `row-cols-${colWidth}-${colSize}`);\n });\n\n const classes = mapToCssModules(classNames(\n className,\n noGutters ? 'gx-0' : null,\n form ? 'form-row' : 'row',\n colClasses\n ), cssModule);\n\n return (\n \n );\n};\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\n\nexport default Row;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, isObject } from './utils';\n\nconst colWidths = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\nconst stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\n\nconst columnProps = PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.number,\n PropTypes.string,\n PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n })\n]);\n\nconst propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n xxl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array,\n};\n\nconst defaultProps = {\n tag: 'div',\n widths: colWidths,\n};\n\nconst getColumnSizeClass = (isXs, colWidth, colSize) => {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : `col-${colWidth}`;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : `col-${colWidth}-auto`;\n }\n\n return isXs ? `col-${colSize}` : `col-${colWidth}-${colSize}`;\n};\n\n\nexport const getColumnClasses = (attributes, cssModule, widths=colWidths) => {\n const colClasses = [];\n \n widths.forEach((colWidth, i) => {\n let columnProp = attributes[colWidth];\n\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n const isXs = !i;\n\n if (isObject(columnProp)) {\n const colSizeInterfix = isXs ? '-' : `-${colWidth}-`;\n const colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n\n colClasses.push(mapToCssModules(classNames({\n [colClass]: columnProp.size || columnProp.size === '',\n [`order${colSizeInterfix}${columnProp.order}`]: columnProp.order || columnProp.order === 0,\n [`offset${colSizeInterfix}${columnProp.offset}`]: columnProp.offset || columnProp.offset === 0\n }), cssModule));\n } else {\n const colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n colClasses.push(colClass);\n }\n });\n\n return {\n colClasses,\n attributes\n }\n}\n\n\nconst Col = (props) => {\n const {\n className,\n cssModule,\n widths,\n tag: Tag,\n ...attributes\n } = props;\n \n let { attributes : modifiedAttributes, colClasses } = getColumnClasses(attributes, cssModule, widths)\n\n if (!colClasses.length) {\n colClasses.push('col');\n }\n\n const classes = mapToCssModules(classNames(\n className,\n colClasses\n ), cssModule);\n\n return (\n \n );\n};\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\n\nexport default Col;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n light: PropTypes.bool,\n dark: PropTypes.bool,\n full: PropTypes.bool,\n fixed: PropTypes.string,\n sticky: PropTypes.string,\n color: PropTypes.string,\n role: PropTypes.string,\n tag: tagPropType,\n container: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n expand: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n children: PropTypes.node,\n};\n\nconst defaultProps = {\n tag: 'nav',\n expand: false,\n container: 'fluid',\n};\n\nconst getExpandClass = (expand) => {\n if (expand === false) {\n return false;\n } else if (expand === true || expand === 'xs') {\n return 'navbar-expand';\n }\n\n return `navbar-expand-${expand}`;\n};\n\nconst Navbar = (props) => {\n const {\n expand,\n className,\n cssModule,\n light,\n dark,\n fixed,\n sticky,\n color,\n container,\n tag: Tag,\n children,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'navbar',\n getExpandClass(expand),\n {\n 'navbar-light': light,\n 'navbar-dark': dark,\n [`bg-${color}`]: color,\n [`fixed-${fixed}`]: fixed,\n [`sticky-${sticky}`]: sticky,\n }\n ), cssModule);\n\n const containerClass = container && (container === true) ? 'container' : `container-${container}`;\n\n return (\n \n { container ?\n
\n {children}\n
:\n children\n }\n
\n );\n};\n\nNavbar.propTypes = propTypes;\nNavbar.defaultProps = defaultProps;\n\nexport default Navbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'a'\n};\n\nconst NavbarBrand = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'navbar-brand'\n ), cssModule);\n\n return (\n \n );\n};\n\nNavbarBrand.propTypes = propTypes;\nNavbarBrand.defaultProps = defaultProps;\n\nexport default NavbarBrand;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\n\nconst defaultProps = {\n tag: 'span'\n};\n\nconst NavbarText = (props) => {\n const {\n className,\n cssModule,\n active,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'navbar-text'\n ), cssModule);\n\n return (\n \n );\n};\n\nNavbarText.propTypes = propTypes;\nNavbarText.defaultProps = defaultProps;\n\nexport default NavbarText;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n type: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node,\n};\n\nconst defaultProps = {\n tag: 'button',\n type: 'button'\n};\n\nconst NavbarToggler = (props) => {\n const {\n className,\n cssModule,\n children,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'navbar-toggler'\n ), cssModule);\n\n return (\n \n {children || }\n \n );\n};\n\nNavbarToggler.propTypes = propTypes;\nNavbarToggler.defaultProps = defaultProps;\n\nexport default NavbarToggler;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tabs: PropTypes.bool,\n pills: PropTypes.bool,\n vertical: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n horizontal: PropTypes.string,\n justified: PropTypes.bool,\n fill: PropTypes.bool,\n navbar: PropTypes.bool,\n card: PropTypes.bool,\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'ul',\n vertical: false,\n};\n\nconst getVerticalClass = (vertical) => {\n if (vertical === false) {\n return false;\n } else if (vertical === true || vertical === 'xs') {\n return 'flex-column';\n }\n\n return `flex-${vertical}-column`;\n};\n\nconst Nav = (props) => {\n const {\n className,\n cssModule,\n tabs,\n pills,\n vertical,\n horizontal,\n justified,\n fill,\n navbar,\n card,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n navbar ? 'navbar-nav' : 'nav',\n horizontal ? `justify-content-${horizontal}` : false,\n getVerticalClass(vertical),\n {\n 'nav-tabs': tabs,\n 'card-header-tabs': card && tabs,\n 'nav-pills': pills,\n 'card-header-pills': card && pills,\n 'nav-justified': justified,\n 'nav-fill': fill,\n }\n ), cssModule);\n\n return (\n \n );\n};\n\nNav.propTypes = propTypes;\nNav.defaultProps = defaultProps;\n\nexport default Nav;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'li'\n};\n\nconst NavItem = (props) => {\n const {\n className,\n cssModule,\n active,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'nav-item',\n active ? 'active' : false\n ), cssModule);\n\n return (\n \n );\n};\n\nNavItem.propTypes = propTypes;\nNavItem.defaultProps = defaultProps;\n\nexport default NavItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n disabled: PropTypes.bool,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n onClick: PropTypes.func,\n href: PropTypes.any,\n};\n\nconst defaultProps = {\n tag: 'a',\n};\n\nclass NavLink extends React.Component {\n constructor(props) {\n super(props);\n\n this.onClick = this.onClick.bind(this);\n }\n\n onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.href === '#') {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n }\n\n render() {\n let {\n className,\n cssModule,\n active,\n tag: Tag,\n innerRef,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'nav-link',\n {\n disabled: attributes.disabled,\n active: active\n }\n ), cssModule);\n\n return (\n \n );\n }\n}\n\nNavLink.propTypes = propTypes;\nNavLink.defaultProps = defaultProps;\n\nexport default NavLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n listTag: tagPropType,\n className: PropTypes.string,\n listClassName: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node,\n 'aria-label': PropTypes.string\n};\n\nconst defaultProps = {\n tag: 'nav',\n listTag: 'ol',\n 'aria-label': 'breadcrumb'\n};\n\nconst Breadcrumb = (props) => {\n const {\n className,\n listClassName,\n cssModule,\n children,\n tag: Tag,\n listTag: ListTag,\n 'aria-label': label,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className\n ), cssModule);\n\n const listClasses = mapToCssModules(classNames(\n 'breadcrumb',\n listClassName\n ), cssModule);\n\n return (\n \n \n {children}\n \n \n );\n};\n\nBreadcrumb.propTypes = propTypes;\nBreadcrumb.defaultProps = defaultProps;\n\nexport default Breadcrumb;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n active: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'li'\n};\n\nconst BreadcrumbItem = (props) => {\n const {\n className,\n cssModule,\n active,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n active ? 'active' : false,\n 'breadcrumb-item'\n ), cssModule);\n\n return (\n \n );\n};\n\nBreadcrumbItem.propTypes = propTypes;\nBreadcrumbItem.defaultProps = defaultProps;\n\nexport default BreadcrumbItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n active: PropTypes.bool,\n 'aria-label': PropTypes.string,\n block: PropTypes.bool,\n color: PropTypes.string,\n disabled: PropTypes.bool,\n outline: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n onClick: PropTypes.func,\n size: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n close: PropTypes.bool,\n};\n\nconst defaultProps = {\n color: 'secondary',\n tag: 'button',\n};\n\nclass Button extends React.Component {\n constructor(props) {\n super(props);\n\n this.onClick = this.onClick.bind(this);\n }\n\n onClick(e) {\n if (this.props.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n return this.props.onClick(e);\n }\n }\n\n render() {\n let {\n active,\n 'aria-label': ariaLabel,\n block,\n className,\n close,\n cssModule,\n color,\n outline,\n size,\n tag: Tag,\n innerRef,\n ...attributes\n } = this.props;\n\n const btnOutlineColor = `btn${outline ? '-outline' : ''}-${color}`;\n\n const classes = mapToCssModules(classNames(\n className,\n close && 'btn-close',\n close || 'btn',\n close || btnOutlineColor,\n size ? `btn-${size}` : false,\n block ? 'd-block w-100' : false,\n { active, disabled: this.props.disabled }\n ), cssModule);\n\n if (attributes.href && Tag === 'button') {\n Tag = 'a';\n }\n\n const defaultAriaLabel = close ? 'Close' : null;\n\n return (\n \n );\n }\n}\n\nButton.propTypes = propTypes;\nButton.defaultProps = defaultProps;\n\nexport default Button;\n","import React from \"react\";\nimport PropTypes from 'prop-types';\nimport Button from \"./Button\";\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\n\nconst propTypes = {\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n defaultValue: PropTypes.bool,\n};\n\nconst defaultProps = {\n defaultValue: false,\n};\n\nclass ButtonToggle extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n toggled: props.defaultValue,\n focus: false,\n }\n\n this.onBlur = this.onBlur.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onClick = this.onClick.bind(this);\n }\n\n onBlur(e) {\n if(this.props.onBlur) {\n this.props.onBlur(e);\n }\n\n this.setState({\n focus: false,\n });\n }\n\n onFocus(e) {\n if(this.props.onFocus) {\n this.props.onFocus(e);\n }\n\n this.setState({\n focus: true,\n });\n }\n\n onClick(e) {\n if(this.props.onClick) {\n this.props.onClick(e);\n }\n\n this.setState(({ toggled }) => ({\n toggled: !toggled,\n }));\n }\n\n render() {\n const {\n className,\n ...attributes\n } = this.props;\n\n const classes = mapToCssModules(classNames(\n className, \n { \n focus: this.state.focus, \n }\n ), this.props.cssModule);\n\n return ;\n }\n}\n\nButtonToggle.propTypes = propTypes;\nButtonToggle.defaultProps = defaultProps;\n\nexport default ButtonToggle;\n","import React from 'react';\n\n/**\n * DropdownContext\n * {\n * toggle: PropTypes.func.isRequired,\n * isOpen: PropTypes.bool.isRequired,\n * direction: PropTypes.oneOf(['up', 'down', 'start', 'end']).isRequired,\n * inNavbar: PropTypes.bool.isRequired,\n * disabled: PropTypes.bool\n * }\n */\nexport const DropdownContext = React.createContext({});","/* eslint react/no-find-dom-node: 0 */\n// https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Manager } from 'react-popper';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, keyCodes, tagPropType } from './utils';\n\nconst propTypes = {\n a11y: PropTypes.bool,\n disabled: PropTypes.bool,\n direction: PropTypes.oneOf(['up', 'down', 'start', 'end', 'left', 'right']),\n group: PropTypes.bool,\n isOpen: PropTypes.bool,\n nav: PropTypes.bool,\n active: PropTypes.bool,\n size: PropTypes.string,\n tag: tagPropType,\n toggle: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n inNavbar: PropTypes.bool,\n setActiveFromChild: PropTypes.bool,\n menuRole: PropTypes.oneOf(['listbox', 'menu'])\n};\n\nconst defaultProps = {\n a11y: true,\n isOpen: false,\n direction: 'down',\n nav: false,\n active: false,\n inNavbar: false,\n setActiveFromChild: false\n};\n\nconst preventDefaultKeys = [\n keyCodes.space,\n keyCodes.enter,\n keyCodes.up,\n keyCodes.down,\n keyCodes.end,\n keyCodes.home\n]\n\nclass Dropdown extends React.Component {\n constructor(props) {\n super(props);\n\n this.addEvents = this.addEvents.bind(this);\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.removeEvents = this.removeEvents.bind(this);\n this.toggle = this.toggle.bind(this);\n this.handleMenuRef = this.handleMenuRef.bind(this);\n\n this.containerRef = React.createRef();\n this.menuRef = React.createRef();\n }\n\n handleMenuRef(menuRef) {\n this.menuRef.current = menuRef;\n }\n\n getContextValue() {\n return {\n toggle: this.toggle,\n isOpen: this.props.isOpen,\n direction: (this.props.direction === 'down' && this.props.dropup) ? 'up' : this.props.direction,\n inNavbar: this.props.inNavbar,\n disabled: this.props.disabled,\n // Callback that should be called by DropdownMenu to provide a ref to\n // a HTML tag that's used for the DropdownMenu\n onMenuRef: this.handleMenuRef,\n menuRole: this.props.menuRole\n };\n }\n\n componentDidMount() {\n this.handleProps();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.isOpen !== prevProps.isOpen) {\n this.handleProps();\n }\n }\n\n componentWillUnmount() {\n this.removeEvents();\n }\n\n getContainer() {\n return this.containerRef.current;\n }\n\n getMenu() {\n return this.menuRef.current;\n }\n\n getMenuCtrl() {\n if (this._$menuCtrl) return this._$menuCtrl;\n this._$menuCtrl = this.getContainer().querySelector('[aria-expanded]');\n return this._$menuCtrl;\n }\n\n getItemType() {\n if(this.context.menuRole === 'listbox') {\n return 'option'\n }\n return 'menuitem'\n }\n\n getMenuItems() {\n // In a real menu with a child DropdownMenu, `this.getMenu()` should never\n // be null, but it is sometimes null in tests. To mitigate that, we just\n // use `this.getContainer()` as the fallback `menuContainer`.\n const menuContainer = this.getMenu() || this.getContainer();\n return [].slice.call(menuContainer.querySelectorAll(`[role=\"${this.getItemType()}\"]`));\n }\n\n addEvents() {\n ['click', 'touchstart', 'keyup'].forEach(event =>\n document.addEventListener(event, this.handleDocumentClick, true)\n );\n }\n\n removeEvents() {\n ['click', 'touchstart', 'keyup'].forEach(event =>\n document.removeEventListener(event, this.handleDocumentClick, true)\n );\n }\n\n handleDocumentClick(e) {\n if (e && (e.which === 3 || (e.type === 'keyup' && e.which !== keyCodes.tab))) return;\n const container = this.getContainer();\n const menu = this.getMenu();\n const clickIsInContainer = container.contains(e.target) && container !== e.target;\n const clickIsInInput = container.classList.contains('input-group') && container.classList.contains('dropdown') && e.target.tagName === 'INPUT';\n const clickIsInMenu = menu && menu.contains(e.target) && menu !== e.target;\n if (((clickIsInContainer && !clickIsInInput) || clickIsInMenu) && (e.type !== 'keyup' || e.which === keyCodes.tab)) {\n return;\n }\n\n this.toggle(e);\n }\n\n handleKeyDown(e) {\n const isTargetMenuItem = e.target.getAttribute('role') === 'menuitem' || e.target.getAttribute('role') === 'option';\n const isTargetMenuCtrl = this.getMenuCtrl() === e.target;\n const isTab = keyCodes.tab === e.which;\n\n if (\n /input|textarea/i.test(e.target.tagName)\n || (isTab && !this.props.a11y)\n || (isTab && !(isTargetMenuItem || isTargetMenuCtrl))\n ) {\n return;\n }\n\n if (preventDefaultKeys.indexOf(e.which) !== -1 || ((e.which >= 48) && (e.which <= 90))) {\n e.preventDefault();\n }\n\n if (this.props.disabled) return;\n\n if (isTargetMenuCtrl) {\n if ([keyCodes.space, keyCodes.enter, keyCodes.up, keyCodes.down].indexOf(e.which) > -1) {\n // Open the menu (if not open) and focus the first menu item\n if (!this.props.isOpen) {\n this.toggle(e);\n }\n setTimeout(() => this.getMenuItems()[0].focus());\n } else if (this.props.isOpen && isTab) {\n // Focus the first menu item if tabbing from an open menu. We need this\n // for cases where the DropdownMenu sets a custom container, which may\n // not be the natural next item to tab to from the DropdownToggle.\n e.preventDefault();\n this.getMenuItems()[0].focus();\n } else if (this.props.isOpen && e.which === keyCodes.esc) {\n this.toggle(e);\n }\n }\n\n if (this.props.isOpen && isTargetMenuItem) {\n if ([keyCodes.tab, keyCodes.esc].indexOf(e.which) > -1) {\n this.toggle(e);\n this.getMenuCtrl().focus();\n } else if ([keyCodes.space, keyCodes.enter].indexOf(e.which) > -1) {\n e.target.click();\n this.getMenuCtrl().focus();\n } else if (\n [keyCodes.down, keyCodes.up].indexOf(e.which) > -1\n || ([keyCodes.n, keyCodes.p].indexOf(e.which) > -1 && e.ctrlKey)\n ) {\n const $menuitems = this.getMenuItems();\n let index = $menuitems.indexOf(e.target);\n if (keyCodes.up === e.which || (keyCodes.p === e.which && e.ctrlKey)) {\n index = index !== 0 ? index - 1 : $menuitems.length - 1;\n } else if (keyCodes.down === e.which || (keyCodes.n === e.which && e.ctrlKey)) {\n index = index === $menuitems.length - 1 ? 0 : index + 1;\n }\n $menuitems[index].focus();\n } else if (keyCodes.end === e.which) {\n const $menuitems = this.getMenuItems();\n $menuitems[$menuitems.length - 1].focus();\n } else if (keyCodes.home === e.which) {\n const $menuitems = this.getMenuItems();\n $menuitems[0].focus();\n } else if ((e.which >= 48) && (e.which <= 90)) {\n const $menuitems = this.getMenuItems();\n const charPressed = String.fromCharCode(e.which).toLowerCase();\n for (let i = 0; i < $menuitems.length; i += 1) {\n const firstLetter = $menuitems[i].textContent && $menuitems[i].textContent[0].toLowerCase();\n if (firstLetter === charPressed) {\n $menuitems[i].focus();\n break;\n }\n }\n }\n }\n }\n\n handleProps() {\n if (this.props.isOpen) {\n this.addEvents();\n } else {\n this.removeEvents();\n }\n }\n\n toggle(e) {\n if (this.props.disabled) {\n return e && e.preventDefault();\n }\n\n return this.props.toggle(e);\n }\n\n render() {\n const {\n className,\n cssModule,\n direction,\n isOpen,\n group,\n size,\n nav,\n setActiveFromChild,\n active,\n tag,\n menuRole,\n ...attrs\n } = omit(this.props, ['toggle', 'disabled', 'inNavbar', 'a11y']);\n\n const Tag = tag || (nav ? 'li' : 'div');\n\n let subItemIsActive = false;\n if (setActiveFromChild) {\n React.Children.map(this.props.children[1].props.children,\n (dropdownItem) => {\n if (dropdownItem && dropdownItem.props.active) subItemIsActive = true;\n }\n );\n }\n\n const classes = mapToCssModules(classNames(\n className,\n nav && active ? 'active' : false,\n setActiveFromChild && subItemIsActive ? 'active' : false,\n {\n 'btn-group': group,\n [`btn-group-${size}`]: !!size,\n dropdown: !group,\n dropup: direction === 'up',\n dropstart: direction === 'start' || direction === 'left',\n dropend: direction === 'end' || direction === 'right',\n show: isOpen,\n 'nav-item': nav\n }\n ), cssModule);\n\n return (\n \n \n \n \n \n );\n }\n}\n\nDropdown.propTypes = propTypes;\nDropdown.defaultProps = defaultProps;\n\nexport default Dropdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Dropdown from './Dropdown';\n\nconst propTypes = {\n children: PropTypes.node,\n};\n\nconst ButtonDropdown = (props) => {\n return (\n \n );\n};\n\nButtonDropdown.propTypes = propTypes;\n\nexport default ButtonDropdown;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n 'aria-label': PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n role: PropTypes.string,\n size: PropTypes.string,\n vertical: PropTypes.bool,\n};\n\nconst defaultProps = {\n tag: 'div',\n role: 'group',\n};\n\nconst ButtonGroup = (props) => {\n const {\n className,\n cssModule,\n size,\n vertical,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n size ? 'btn-group-' + size : false,\n vertical ? 'btn-group-vertical' : 'btn-group'\n ), cssModule);\n\n return (\n \n );\n};\n\nButtonGroup.propTypes = propTypes;\nButtonGroup.defaultProps = defaultProps;\n\nexport default ButtonGroup;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n 'aria-label': PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n role: PropTypes.string,\n};\n\nconst defaultProps = {\n tag: 'div',\n role: 'toolbar',\n};\n\nconst ButtonToolbar = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'btn-toolbar'\n ), cssModule);\n\n return (\n \n );\n};\n\nButtonToolbar.propTypes = propTypes;\nButtonToolbar.defaultProps = defaultProps;\n\nexport default ButtonToolbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, omit, tagPropType } from './utils';\n\nconst propTypes = {\n children: PropTypes.node,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n divider: PropTypes.bool,\n tag: tagPropType,\n header: PropTypes.bool,\n onClick: PropTypes.func,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.bool,\n text: PropTypes.bool\n};\n\nconst defaultProps = {\n tag: 'button',\n toggle: true\n};\n\nclass DropdownItem extends React.Component {\n constructor(props) {\n super(props);\n\n this.onClick = this.onClick.bind(this);\n this.getTabIndex = this.getTabIndex.bind(this);\n }\n\n getRole() {\n if(this.context.menuRole === 'listbox') {\n return 'option'\n }\n return 'menuitem'\n }\n\n onClick(e) {\n const { disabled, header, divider, text } = this.props;\n if (disabled || header || divider || text) {\n e.preventDefault();\n return;\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n\n if (this.props.toggle) {\n this.context.toggle(e);\n }\n }\n\n getTabIndex() {\n const { disabled, header, divider, text } = this.props;\n if (disabled || header || divider || text) {\n return '-1';\n }\n\n return '0';\n }\n\n render() {\n const tabIndex = this.getTabIndex();\n const role = tabIndex > -1 ? this.getRole() : undefined;\n let {\n className,\n cssModule,\n divider,\n tag: Tag,\n header,\n active,\n text,\n ...props } = omit(this.props, ['toggle']);\n\n const classes = mapToCssModules(classNames(\n className,\n {\n disabled: props.disabled,\n 'dropdown-item': !divider && !header && !text,\n active: active,\n 'dropdown-header': header,\n 'dropdown-divider': divider,\n 'dropdown-item-text': text\n }\n ), cssModule);\n\n if (Tag === 'button') {\n if (header) {\n Tag = 'h6';\n } else if (divider) {\n Tag = 'div';\n } else if (props.href) {\n Tag = 'a';\n } else if (text) {\n Tag = 'span';\n }\n }\n\n return (\n \n );\n }\n}\n\nDropdownItem.propTypes = propTypes;\nDropdownItem.defaultProps = defaultProps;\nDropdownItem.contextType = DropdownContext;\n\nexport default DropdownItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType, targetPropType, getTarget, deprecated } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n children: PropTypes.node.isRequired,\n dark: PropTypes.bool,\n end: PropTypes.bool,\n flip: PropTypes.bool,\n modifiers: PropTypes.array,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n persist: PropTypes.bool,\n strategy: PropTypes.string,\n container: targetPropType,\n right: deprecated(PropTypes.bool, 'Please use \"end\" instead.'),\n};\n\nconst defaultProps = {\n tag: 'div',\n flip: true,\n modifiers: [],\n};\n\nconst directionPositionMap = {\n up: 'top',\n left: 'left',\n right: 'right',\n start: 'left',\n end: 'right',\n down: 'bottom',\n};\n\nclass DropdownMenu extends React.Component {\n\n getRole() {\n if(this.context.menuRole === 'listbox') {\n return 'listbox'\n }\n return 'menu'\n }\n\n render() {\n const {\n className,\n cssModule,\n dark,\n end,\n right,\n tag,\n flip,\n modifiers,\n persist,\n strategy,\n container,\n ...attrs\n } = this.props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'dropdown-menu',\n {\n 'dropdown-menu-dark': dark,\n 'dropdown-menu-end': end || right,\n show: this.context.isOpen,\n }\n ), cssModule);\n\n const Tag = tag;\n\n if (persist || (this.context.isOpen && !this.context.inNavbar)) {\n\n const position1 = directionPositionMap[this.context.direction] || 'bottom';\n const position2 = (end || right) ? 'end' : 'start';\n const poperPlacement = `${position1}-${position2}`;\n const poperModifiers = [\n ...modifiers,\n {\n name: 'flip',\n enabled: !!flip,\n },\n ];\n\n const popper = (\n \n {({ ref, style, placement }) => {\n let combinedStyle = { ...this.props.style, ...style };\n\n const handleRef = (tagRef) => {\n // Send the ref to `react-popper`\n ref(tagRef);\n // Send the ref to the parent Dropdown so that clicks outside\n // it will cause it to close\n const { onMenuRef } = this.context;\n if (onMenuRef) onMenuRef(tagRef);\n };\n\n return (\n \n );\n }}\n \n );\n\n if (container) {\n return ReactDOM.createPortal(popper, getTarget(container));\n } else {\n return popper;\n }\n }\n\n return (\n \n );\n }\n};\n\nDropdownMenu.propTypes = propTypes;\nDropdownMenu.defaultProps = defaultProps;\nDropdownMenu.contextType = DropdownContext;\n\nexport default DropdownMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Reference } from 'react-popper';\nimport { DropdownContext } from './DropdownContext';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Button from './Button';\n\nconst propTypes = {\n caret: PropTypes.bool,\n color: PropTypes.string,\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n disabled: PropTypes.bool,\n onClick: PropTypes.func,\n 'aria-haspopup': PropTypes.bool,\n split: PropTypes.bool,\n tag: tagPropType,\n nav: PropTypes.bool,\n};\n\nconst defaultProps = {\n color: 'secondary',\n 'aria-haspopup': true\n};\n\nclass DropdownToggle extends React.Component {\n constructor(props) {\n super(props);\n\n this.onClick = this.onClick.bind(this);\n }\n\n onClick(e) {\n if (this.props.disabled || this.context.disabled) {\n e.preventDefault();\n return;\n }\n\n if (this.props.nav && !this.props.tag) {\n e.preventDefault();\n }\n\n if (this.props.onClick) {\n this.props.onClick(e);\n }\n\n this.context.toggle(e);\n }\n\n getRole() {\n return this.context.menuRole || this.props['aria-haspopup'];\n }\n\n render() {\n const { className, color, cssModule, caret, split, nav, tag, innerRef, ...props } = this.props;\n const ariaLabel = props['aria-label'] || 'Toggle Dropdown';\n const classes = mapToCssModules(classNames(\n className,\n {\n 'dropdown-toggle': caret || split,\n 'dropdown-toggle-split': split,\n 'nav-link': nav\n }\n ), cssModule);\n const children =\n typeof props.children !== 'undefined' ? (\n props.children\n ) : (\n {ariaLabel}\n );\n\n let Tag;\n\n if (nav && !tag) {\n Tag = 'a';\n props.href = '#';\n } else if (!tag) {\n Tag = Button;\n props.color = color;\n props.cssModule = cssModule;\n } else {\n Tag = tag;\n }\n\n if (this.context.inNavbar) {\n return (\n \n );\n }\n\n return (\n \n {({ ref }) => (\n \n )}\n \n );\n }\n}\n\nDropdownToggle.propTypes = propTypes;\nDropdownToggle.defaultProps = defaultProps;\nDropdownToggle.contextType = DropdownContext;\n\nexport default DropdownToggle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionPropTypeKeys, TransitionTimeouts, tagPropType } from './utils';\n\nconst propTypes = {\n ...Transition.propTypes,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n tag: tagPropType,\n baseClass: PropTypes.string,\n baseClassActive: PropTypes.string,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n};\n\nconst defaultProps = {\n ...Transition.defaultProps,\n tag: 'div',\n baseClass: 'fade',\n baseClassActive: 'show',\n timeout: TransitionTimeouts.Fade,\n appear: true,\n enter: true,\n exit: true,\n in: true,\n};\n\nfunction Fade(props) {\n const {\n tag: Tag,\n baseClass,\n baseClassActive,\n className,\n cssModule,\n children,\n innerRef,\n ...otherProps\n } = props;\n\n const transitionProps = pick(otherProps, TransitionPropTypeKeys);\n const childProps = omit(otherProps, TransitionPropTypeKeys);\n\n return (\n \n {(status) => {\n const isActive = status === 'entered';\n const classes = mapToCssModules(classNames(\n className,\n baseClass,\n isActive && baseClassActive\n ), cssModule);\n return (\n \n {children}\n \n );\n }}\n \n );\n}\n\nFade.propTypes = propTypes;\nFade.defaultProps = defaultProps;\n\nexport default Fade;\n","import React from 'react';\n\n/**\n * AccordionContext\n * {\n * toggle: PropTypes.func.isRequired,\n * openId: PropTypes.string, \n * }\n */\nexport const AccordionContext = React.createContext({});\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport { AccordionContext } from './AccordionContext';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n children: PropTypes.node,\n flush: PropTypes.bool,\n open: PropTypes.oneOfType([PropTypes.array, PropTypes.string]).isRequired,\n toggle: PropTypes.func.isRequired,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst Accordion = (props) => {\n const {\n flush,\n open,\n toggle,\n className,\n cssModule,\n tag: Tag,\n innerRef,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'accordion',\n {\n 'accordion-flush': flush\n }\n ), cssModule);\n\n const accordionContext = useMemo(() => ({\n open,\n toggle,\n }));\n\n return (\n \n \n \n );\n};\n\nAccordion.propTypes = propTypes;\nAccordion.defaultProps = defaultProps;\n\nexport default Accordion;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { tagPropType } from './utils';\nimport Accordion from './Accordion';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n children: PropTypes.node,\n defaultOpen: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n stayOpen: PropTypes.bool,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst UncontrolledAccordion = ({ defaultOpen, stayOpen, ...props }) => {\n const [open, setOpen] = useState(defaultOpen || (stayOpen ? [] : undefined));\n const toggle = (id) => {\n if (stayOpen) {\n open.includes(id) ? setOpen(open.filter(accordionId => accordionId !== id)) : setOpen([...open, id]);\n } else {\n open === id ? setOpen(undefined) : setOpen(id);\n }\n };\n\n return ;\n};\n\nAccordion.propTypes = propTypes;\nAccordion.defaultProps = defaultProps;\n\nexport default UncontrolledAccordion;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport { AccordionContext } from './AccordionContext';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n children: PropTypes.node,\n targetId: PropTypes.string.isRequired,\n};\n\nconst defaultProps = {\n tag: 'h2'\n};\n\nconst AccordionHeader = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n innerRef,\n children,\n targetId,\n ...attributes\n } = props;\n const { open, toggle } = useContext(AccordionContext);\n\n const classes = mapToCssModules(classNames(\n className,\n 'accordion-header',\n ), cssModule);\n\n const buttonClasses = mapToCssModules(classNames(\n 'accordion-button',\n {\n collapsed: !(Array.isArray(open) ? open.includes(targetId) : open === targetId)\n },\n ), cssModule);\n\n return (\n \n \n \n );\n};\n\nAccordionHeader.propTypes = propTypes;\nAccordionHeader.defaultProps = defaultProps;\n\nexport default AccordionHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n children: PropTypes.node,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst AccordionItem = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n innerRef,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'accordion-item',\n ), cssModule);\n\n return (\n \n );\n};\n\nAccordionItem.propTypes = propTypes;\nAccordionItem.defaultProps = defaultProps;\n\nexport default AccordionItem;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, omit, pick, TransitionTimeouts, TransitionPropTypeKeys, TransitionStatuses, tagPropType } from './utils';\n\nconst propTypes = {\n ...Transition.propTypes,\n horizontal: PropTypes.bool,\n isOpen: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n tag: tagPropType,\n className: PropTypes.node,\n navbar: PropTypes.bool,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.object\n ]),\n};\n\nconst defaultProps = {\n ...Transition.defaultProps,\n horizontal: false,\n isOpen: false,\n appear: false,\n enter: true,\n exit: true,\n tag: 'div',\n timeout: TransitionTimeouts.Collapse,\n};\n\nconst transitionStatusToClassHash = {\n [TransitionStatuses.ENTERING]: 'collapsing',\n [TransitionStatuses.ENTERED]: 'collapse show',\n [TransitionStatuses.EXITING]: 'collapsing',\n [TransitionStatuses.EXITED]: 'collapse',\n};\n\nfunction getTransitionClass(status) {\n return transitionStatusToClassHash[status] || 'collapse';\n}\n\nclass Collapse extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n dimension: null\n };\n\n ['onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'].forEach((name) => {\n this[name] = this[name].bind(this);\n });\n }\n\n getDimension(node) {\n return this.props.horizontal ? node.scrollWidth : node.scrollHeight;\n }\n\n onEntering(node, isAppearing) {\n this.setState({ dimension: this.getDimension(node) });\n this.props.onEntering(node, isAppearing);\n }\n\n onEntered(node, isAppearing) {\n this.setState({ dimension: null });\n this.props.onEntered(node, isAppearing);\n }\n\n onExit(node) {\n this.setState({ dimension: this.getDimension(node) });\n this.props.onExit(node);\n }\n\n onExiting(node) {\n // getting this variable triggers a reflow\n const _unused = this.getDimension(node); // eslint-disable-line no-unused-vars\n this.setState({ dimension: 0 });\n this.props.onExiting(node);\n }\n\n onExited(node) {\n this.setState({ dimension: null });\n this.props.onExited(node);\n }\n\n render() {\n const {\n tag: Tag,\n horizontal,\n isOpen,\n className,\n navbar,\n cssModule,\n children,\n innerRef,\n ...otherProps\n } = this.props;\n\n const { dimension } = this.state;\n\n const transitionProps = pick(otherProps, TransitionPropTypeKeys);\n const childProps = omit(otherProps, TransitionPropTypeKeys);\n return (\n \n {(status) => {\n let collapseClass = getTransitionClass(status);\n const classes = mapToCssModules(classNames(\n className,\n horizontal && 'collapse-horizontal',\n collapseClass,\n navbar && 'navbar-collapse'\n ), cssModule);\n const style = dimension === null ? null : { [horizontal ? 'width' : 'height']: dimension };\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n}\n\nCollapse.propTypes = propTypes;\nCollapse.defaultProps = defaultProps;\nexport default Collapse;\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nimport Collapse from './Collapse';\nimport { AccordionContext } from './AccordionContext';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n children: PropTypes.node,\n accordionId: PropTypes.string.isRequired,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst AccordionItem = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n innerRef,\n children,\n accordionId,\n ...attributes\n } = props;\n\n const { open } = useContext(AccordionContext);\n\n const classes = mapToCssModules(classNames(\n className,\n 'accordion-collapse',\n ), cssModule);\n\n return (\n \n {children}\n \n );\n};\n\nAccordionItem.propTypes = propTypes;\nAccordionItem.defaultProps = defaultProps;\n\nexport default AccordionItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n color: PropTypes.string,\n pill: PropTypes.bool,\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n children: PropTypes.node,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n color: 'secondary',\n pill: false,\n tag: 'span'\n};\n\nconst Badge = (props) => {\n let {\n className,\n cssModule,\n color,\n innerRef,\n pill,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'badge',\n 'bg-' + color,\n pill ? 'rounded-pill' : false\n ), cssModule);\n\n if (attributes.href && Tag === 'span') {\n Tag = 'a';\n }\n\n return (\n \n );\n};\n\nBadge.propTypes = propTypes;\nBadge.defaultProps = defaultProps;\n\nexport default Badge;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n inverse: PropTypes.bool,\n color: PropTypes.string,\n body: PropTypes.bool,\n outline: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst Card = (props) => {\n const {\n className,\n cssModule,\n color,\n body,\n inverse,\n outline,\n tag: Tag,\n innerRef,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card',\n inverse ? 'text-white' : false,\n body ? 'card-body' : false,\n color ? `${outline ? 'border' : 'bg'}-${color}` : false\n ), cssModule);\n\n return (\n \n );\n};\n\nCard.propTypes = propTypes;\nCard.defaultProps = defaultProps;\n\nexport default Card;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardGroup = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-group'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardGroup.propTypes = propTypes;\nCardGroup.defaultProps = defaultProps;\n\nexport default CardGroup;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div',\n};\n\nconst CardDeck = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-deck'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardDeck.propTypes = propTypes;\nCardDeck.defaultProps = defaultProps;\n\nexport default CardDeck;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardColumns = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-columns'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardColumns.propTypes = propTypes;\nCardColumns.defaultProps = defaultProps;\n\nexport default CardColumns;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardBody = (props) => {\n const {\n className,\n cssModule,\n innerRef,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-body'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardBody.propTypes = propTypes;\nCardBody.defaultProps = defaultProps;\n\nexport default CardBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.func, PropTypes.string]),\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'a'\n};\n\nconst CardLink = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n innerRef,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-link'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardLink.propTypes = propTypes;\nCardLink.defaultProps = defaultProps;\n\nexport default CardLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardFooter = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-footer'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardFooter.propTypes = propTypes;\nCardFooter.defaultProps = defaultProps;\n\nexport default CardFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardHeader = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-header'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardHeader.propTypes = propTypes;\nCardHeader.defaultProps = defaultProps;\n\nexport default CardHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n top: PropTypes.bool,\n bottom: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'img'\n};\n\nconst CardImg = (props) => {\n const {\n className,\n cssModule,\n top,\n bottom,\n tag: Tag,\n ...attributes\n } = props;\n\n let cardImgClassName = 'card-img';\n if (top) {\n cardImgClassName = 'card-img-top';\n }\n if (bottom) {\n cardImgClassName = 'card-img-bottom';\n }\n\n const classes = mapToCssModules(classNames(\n className,\n cardImgClassName\n ), cssModule);\n\n return (\n \n );\n};\n\nCardImg.propTypes = propTypes;\nCardImg.defaultProps = defaultProps;\n\nexport default CardImg;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardImgOverlay = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-img-overlay'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardImgOverlay.propTypes = propTypes;\nCardImgOverlay.defaultProps = defaultProps;\n\nexport default CardImgOverlay;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { Transition } from 'react-transition-group';\nimport { mapToCssModules, TransitionTimeouts, TransitionStatuses, tagPropType } from './utils';\n\nclass CarouselItem extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n startAnimation: false,\n };\n\n this.onEnter = this.onEnter.bind(this);\n this.onEntering = this.onEntering.bind(this);\n this.onExit = this.onExit.bind(this);\n this.onExiting = this.onExiting.bind(this);\n this.onExited = this.onExited.bind(this);\n }\n\n onEnter(node, isAppearing) {\n this.setState({ startAnimation: false });\n this.props.onEnter(node, isAppearing);\n }\n\n onEntering(node, isAppearing) {\n // getting this variable triggers a reflow\n const offsetHeight = node.offsetHeight;\n this.setState({ startAnimation: true });\n this.props.onEntering(node, isAppearing);\n return offsetHeight;\n }\n\n onExit(node) {\n this.setState({ startAnimation: false });\n this.props.onExit(node);\n }\n\n onExiting(node) {\n this.setState({ startAnimation: true });\n node.dispatchEvent(new CustomEvent('slide.bs.carousel'));\n this.props.onExiting(node);\n }\n\n onExited(node) {\n node.dispatchEvent(new CustomEvent('slid.bs.carousel'));\n this.props.onExited(node);\n }\n\n render() {\n const { in: isIn, children, cssModule, slide, tag: Tag, className, ...transitionProps } = this.props;\n\n return (\n \n {(status) => {\n const { direction } = this.context;\n const isActive = (status === TransitionStatuses.ENTERED) || (status === TransitionStatuses.EXITING);\n const directionClassName = (status === TransitionStatuses.ENTERING || status === TransitionStatuses.EXITING) &&\n this.state.startAnimation &&\n (direction === 'end' ? 'carousel-item-start' : 'carousel-item-end');\n const orderClassName = (status === TransitionStatuses.ENTERING) &&\n (direction === 'end' ? 'carousel-item-next' : 'carousel-item-prev');\n const itemClasses = mapToCssModules(classNames(\n className,\n 'carousel-item',\n isActive && 'active',\n directionClassName,\n orderClassName,\n ), cssModule);\n\n return (\n \n {children}\n \n );\n }}\n \n );\n }\n}\n\nCarouselItem.propTypes = {\n ...Transition.propTypes,\n tag: tagPropType,\n in: PropTypes.bool,\n cssModule: PropTypes.object,\n children: PropTypes.node,\n slide: PropTypes.bool,\n className: PropTypes.string,\n};\n\nCarouselItem.defaultProps = {\n ...Transition.defaultProps,\n tag: 'div',\n timeout: TransitionTimeouts.Carousel,\n slide: true,\n};\n\nCarouselItem.contextTypes = {\n direction: PropTypes.string\n};\n\nexport default CarouselItem;\n","import React from 'react';\n\n/**\n * CarouselContext\n * {\n * direction: PropTypes.oneOf(['start', 'end']).isRequired,\n * }\n */\nexport const CarouselContext = React.createContext({});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport CarouselItem from './CarouselItem';\nimport { CarouselContext } from './CarouselContext';\nimport { mapToCssModules } from './utils';\n \nconst SWIPE_THRESHOLD = 40;\n\nclass Carousel extends React.Component {\n constructor(props) {\n super(props);\n this.handleKeyPress = this.handleKeyPress.bind(this);\n this.renderItems = this.renderItems.bind(this);\n this.hoverStart = this.hoverStart.bind(this);\n this.hoverEnd = this.hoverEnd.bind(this);\n this.handleTouchStart = this.handleTouchStart.bind(this);\n this.handleTouchEnd = this.handleTouchEnd.bind(this);\n this.touchStartX = 0;\n this.touchStartY = 0;\n this.state = {\n activeIndex: this.props.activeIndex,\n direction: 'end',\n indicatorClicked: false,\n };\n }\n\n getContextValue() {\n return { direction: this.state.direction };\n }\n\n componentDidMount() {\n // Set up the cycle\n if (this.props.ride === 'carousel') {\n this.setInterval();\n }\n\n // TODO: move this to the specific carousel like bootstrap. Currently it will trigger ALL carousels on the page.\n document.addEventListener('keyup', this.handleKeyPress);\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n let newState = null;\n let { activeIndex, direction, indicatorClicked } = prevState;\n\n if (nextProps.activeIndex !== activeIndex) {\n // Calculate the direction to turn\n if (nextProps.activeIndex === activeIndex + 1) {\n direction = 'end';\n } else if (nextProps.activeIndex === activeIndex -1) {\n direction = 'start';\n } else if (nextProps.activeIndex < activeIndex) {\n direction = indicatorClicked ? 'start' : 'end';\n } else if (nextProps.activeIndex !== activeIndex) {\n direction = indicatorClicked ? 'end' : 'start';\n }\n\n newState = {\n activeIndex: nextProps.activeIndex,\n direction,\n indicatorClicked: false,\n }\n }\n\n return newState;\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (prevState.activeIndex === this.state.activeIndex) return;\n this.setInterval(this.props);\n }\n\n componentWillUnmount() {\n this.clearInterval();\n document.removeEventListener('keyup', this.handleKeyPress);\n }\n\n setInterval(props = this.props) {\n // make sure not to have multiple intervals going...\n this.clearInterval();\n if (props.interval) {\n this.cycleInterval = setInterval(() => {\n props.next();\n }, parseInt(props.interval, 10));\n }\n }\n\n clearInterval() {\n clearInterval(this.cycleInterval);\n }\n\n hoverStart(...args) {\n if (this.props.pause === 'hover') {\n this.clearInterval();\n }\n if (this.props.mouseEnter) {\n this.props.mouseEnter(...args);\n }\n }\n\n hoverEnd(...args) {\n if (this.props.pause === 'hover') {\n this.setInterval();\n }\n if (this.props.mouseLeave) {\n this.props.mouseLeave(...args);\n }\n }\n\n handleKeyPress(evt) {\n if (this.props.keyboard) {\n if (evt.keyCode === 37) {\n this.props.previous();\n } else if (evt.keyCode === 39) {\n this.props.next();\n }\n }\n }\n\n handleTouchStart(e) {\n if(!this.props.enableTouch) {\n return;\n }\n this.touchStartX = e.changedTouches[0].screenX;\n this.touchStartY = e.changedTouches[0].screenY;\n }\n\n handleTouchEnd(e) {\n if(!this.props.enableTouch) {\n return;\n }\n\n const currentX = e.changedTouches[0].screenX;\n const currentY = e.changedTouches[0].screenY;\n const diffX = Math.abs(this.touchStartX - currentX);\n const diffY = Math.abs(this.touchStartY - currentY);\n\n // Don't swipe if Y-movement is bigger than X-movement\n if(diffX < diffY) {\n return;\n }\n\n if(diffX < SWIPE_THRESHOLD) {\n return;\n }\n\n if(currentX < this.touchStartX) {\n this.props.next();\n } else {\n this.props.previous();\n }\n }\n\n renderItems(carouselItems, className) {\n const { slide } = this.props;\n return (\n
\n {carouselItems.map((item, index) => {\n const isIn = (index === this.state.activeIndex);\n return React.cloneElement(item, {\n in: isIn,\n slide: slide,\n });\n })}\n
\n );\n }\n\n render() {\n const { cssModule, slide, className, dark, fade } = this.props;\n const outerClasses = mapToCssModules(classNames(\n className,\n 'carousel',\n 'carousel-fade' && fade,\n slide && 'slide',\n dark && 'carousel-dark'\n ), cssModule);\n\n const innerClasses = mapToCssModules(classNames(\n 'carousel-inner'\n ), cssModule);\n\n // filter out booleans, null, or undefined\n const children = this.props.children.filter(child => child !== null && child !== undefined && typeof child !== 'boolean');\n\n const slidesOnly = children.every(child => child.type === CarouselItem);\n\n // Rendering only slides\n if (slidesOnly) {\n return (\n
\n \n {this.renderItems(children, innerClasses)}\n \n
\n );\n }\n\n // Rendering slides and controls\n if (children[0] instanceof Array) {\n const carouselItems = children[0];\n const controlLeft = children[1];\n const controlRight = children[2];\n\n return (\n
\n \n {this.renderItems(carouselItems, innerClasses)}\n {controlLeft}\n {controlRight}\n \n
\n );\n }\n\n // Rendering indicators, slides and controls\n const indicators = children[0];\n const wrappedOnClick = (e) => {\n if (typeof indicators.props.onClickHandler === 'function') {\n this.setState({ indicatorClicked: true }, () => indicators.props.onClickHandler(e));\n }\n };\n const wrappedIndicators = React.cloneElement(indicators, { onClickHandler: wrappedOnClick });\n const carouselItems = children[1];\n const controlLeft = children[2];\n const controlRight = children[3];\n\n return (\n
\n \n {wrappedIndicators}\n {this.renderItems(carouselItems, innerClasses)}\n {controlLeft}\n {controlRight}\n \n
\n );\n }\n}\n\nCarousel.propTypes = {\n // the current active slide of the carousel\n activeIndex: PropTypes.number,\n // a function which should advance the carousel to the next slide (via activeIndex)\n next: PropTypes.func.isRequired,\n // a function which should advance the carousel to the previous slide (via activeIndex)\n previous: PropTypes.func.isRequired,\n // controls if the left and right arrow keys should control the carousel\n keyboard: PropTypes.bool,\n /* If set to \"hover\", pauses the cycling of the carousel on mouseenter and resumes the cycling of the carousel on\n * mouseleave. If set to false, hovering over the carousel won't pause it. (default: \"hover\")\n */\n pause: PropTypes.oneOf(['hover', false]),\n // Autoplays the carousel after the user manually cycles the first item. If \"carousel\", autoplays the carousel on load.\n // This is how bootstrap defines it... I would prefer a bool named autoplay or something...\n ride: PropTypes.oneOf(['carousel']),\n // the interval at which the carousel automatically cycles (default: 5000)\n // eslint-disable-next-line react/no-unused-prop-types\n interval: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n PropTypes.bool,\n ]),\n children: PropTypes.array,\n // called when the mouse enters the Carousel\n mouseEnter: PropTypes.func,\n // called when the mouse exits the Carousel\n mouseLeave: PropTypes.func,\n // controls whether the slide animation on the Carousel works or not\n slide: PropTypes.bool,\n // make the controls, indicators and captions dark on the Carousel\n dark: PropTypes.bool,\n cssModule: PropTypes.object,\n className: PropTypes.string,\n enableTouch: PropTypes.bool,\n};\n\nCarousel.defaultProps = {\n interval: 5000,\n pause: 'hover',\n keyboard: true,\n slide: true,\n enableTouch: true,\n fade: false,\n};\n\nCarousel.childContextTypes = {\n direction: PropTypes.string\n};\n\nexport default Carousel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\n\nconst CarouselControl = (props) => {\n const { direction, onClickHandler, cssModule, directionText, className } = props;\n\n const anchorClasses = mapToCssModules(classNames(\n className,\n `carousel-control-${direction}`\n ), cssModule);\n\n const iconClasses = mapToCssModules(classNames(\n `carousel-control-${direction}-icon`\n ), cssModule);\n\n const screenReaderClasses = mapToCssModules(classNames(\n 'visually-hidden'\n ), cssModule);\n\n\n return (\n // We need to disable this linting rule to use an `` instead of\n // `);\n });\n\n return (\n
\n {indicators}\n
\n );\n};\n\nCarouselIndicators.propTypes = {\n items: PropTypes.array.isRequired,\n activeIndex: PropTypes.number.isRequired,\n cssModule: PropTypes.object,\n onClickHandler: PropTypes.func.isRequired,\n className: PropTypes.string,\n};\n\nexport default CarouselIndicators;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules } from './utils';\n\nconst CarouselCaption = (props) => {\n const { captionHeader, captionText, cssModule, className } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'carousel-caption',\n 'd-none',\n 'd-md-block'\n ), cssModule);\n\n return (\n
\n

{captionHeader}

\n

{captionText}

\n
\n );\n};\n\nCarouselCaption.propTypes = {\n captionHeader: PropTypes.node,\n captionText: PropTypes.node.isRequired,\n cssModule: PropTypes.object,\n className: PropTypes.string,\n};\n\nexport default CarouselCaption;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Carousel from './Carousel';\nimport CarouselItem from './CarouselItem';\nimport CarouselControl from './CarouselControl';\nimport CarouselIndicators from './CarouselIndicators';\nimport CarouselCaption from './CarouselCaption';\n\nconst propTypes = {\n items: PropTypes.array.isRequired,\n indicators: PropTypes.bool,\n controls: PropTypes.bool,\n autoPlay: PropTypes.bool,\n defaultActiveIndex: PropTypes.number,\n activeIndex: PropTypes.number,\n next: PropTypes.func,\n previous: PropTypes.func,\n goToIndex: PropTypes.func,\n};\n\nclass UncontrolledCarousel extends Component {\n constructor(props) {\n super(props);\n this.animating = false;\n this.state = { activeIndex: props.defaultActiveIndex || 0 };\n this.next = this.next.bind(this);\n this.previous = this.previous.bind(this);\n this.goToIndex = this.goToIndex.bind(this);\n this.onExiting = this.onExiting.bind(this);\n this.onExited = this.onExited.bind(this);\n }\n\n onExiting() {\n this.animating = true;\n }\n\n onExited() {\n this.animating = false;\n }\n\n next() {\n if (this.animating) return;\n const nextIndex = this.state.activeIndex === this.props.items.length - 1 ? 0 : this.state.activeIndex + 1;\n this.setState({ activeIndex: nextIndex });\n }\n\n previous() {\n if (this.animating) return;\n const nextIndex = this.state.activeIndex === 0 ? this.props.items.length - 1 : this.state.activeIndex - 1;\n this.setState({ activeIndex: nextIndex });\n }\n\n goToIndex(newIndex) {\n if (this.animating) return;\n this.setState({ activeIndex: newIndex });\n }\n\n render() {\n const { defaultActiveIndex, autoPlay, indicators, controls, items, goToIndex, ...props } = this.props;\n const { activeIndex } = this.state;\n\n const slides = items.map((item) => {\n const key = item.key || item.src;\n return (\n \n {item.altText}\n \n \n );\n });\n\n return (\n \n {indicators && }\n {slides}\n {controls && }\n {controls && }\n \n );\n }\n}\n\nUncontrolledCarousel.propTypes = propTypes;\nUncontrolledCarousel.defaultProps = {\n controls: true,\n indicators: true,\n autoPlay: true,\n};\n\nexport default UncontrolledCarousel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardSubtitle = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-subtitle'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardSubtitle.propTypes = propTypes;\nCardSubtitle.defaultProps = defaultProps;\n\nexport default CardSubtitle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'p'\n};\n\nconst CardText = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-text'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardText.propTypes = propTypes;\nCardText.defaultProps = defaultProps;\n\nexport default CardText;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst CardTitle = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n const classes = mapToCssModules(classNames(\n className,\n 'card-title'\n ), cssModule);\n\n return (\n \n );\n};\n\nCardTitle.propTypes = propTypes;\nCardTitle.defaultProps = defaultProps;\n\nexport default CardTitle;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport { Popper as ReactPopper } from 'react-popper';\nimport { getTarget, targetPropType, mapToCssModules, DOMElement, tagPropType } from './utils';\nimport Fade from './Fade';\n\nfunction noop() { }\n\nconst propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n popperClassName: PropTypes.string,\n placement: PropTypes.string,\n placementPrefix: PropTypes.string,\n arrowClassName: PropTypes.string,\n hideArrow: PropTypes.bool,\n tag: tagPropType,\n isOpen: PropTypes.bool.isRequired,\n cssModule: PropTypes.object,\n offset: PropTypes.arrayOf(PropTypes.number),\n fallbackPlacements: PropTypes.array,\n flip: PropTypes.bool,\n container: targetPropType,\n target: targetPropType.isRequired,\n modifiers: PropTypes.array,\n strategy: PropTypes.string,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n onClosed: PropTypes.func,\n fade: PropTypes.bool,\n transition: PropTypes.shape(Fade.propTypes),\n};\n\nconst defaultProps = {\n boundariesElement: 'scrollParent',\n placement: 'auto',\n hideArrow: false,\n isOpen: false,\n offset: [0, 0],\n flip: true,\n container: 'body',\n modifiers: [],\n onClosed: noop,\n fade: true,\n transition: {\n ...Fade.defaultProps,\n }\n};\n\nclass PopperContent extends React.Component {\n constructor(props) {\n super(props);\n\n this.setTargetNode = this.setTargetNode.bind(this);\n this.getTargetNode = this.getTargetNode.bind(this);\n this.getRef = this.getRef.bind(this);\n this.onClosed = this.onClosed.bind(this);\n this.state = { isOpen: props.isOpen };\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return { isOpen: props.isOpen };\n }\n else return null;\n }\n\n componentDidUpdate() {\n if (this._element && this._element.childNodes && this._element.childNodes[0] && this._element.childNodes[0].focus) {\n this._element.childNodes[0].focus();\n }\n }\n\n setTargetNode(node) {\n this.targetNode = typeof node === 'string' ? getTarget(node) : node;\n }\n\n getTargetNode() {\n return this.targetNode;\n }\n\n getContainerNode() {\n return getTarget(this.props.container);\n }\n\n getRef(ref) {\n this._element = ref;\n }\n\n onClosed() {\n this.props.onClosed();\n this.setState({ isOpen: false });\n }\n\n renderChildren() {\n const {\n cssModule,\n children,\n isOpen,\n flip,\n target,\n offset,\n fallbackPlacements,\n placementPrefix,\n arrowClassName: _arrowClassName,\n hideArrow,\n popperClassName: _popperClassName,\n tag,\n container,\n modifiers,\n strategy,\n boundariesElement,\n onClosed,\n fade,\n transition,\n placement,\n ...attrs\n } = this.props;\n const arrowClassName = mapToCssModules(classNames(\n 'arrow',\n _arrowClassName\n ), cssModule);\n const popperClassName = mapToCssModules(classNames(\n _popperClassName,\n placementPrefix ? `${placementPrefix}-auto` : ''\n ), this.props.cssModule);\n\n const modifierNames = modifiers.map(m => m.name);\n const baseModifiers = [\n {\n name: 'offset',\n options: {\n offset,\n },\n },\n {\n name: 'flip',\n enabled: flip,\n options: {\n fallbackPlacements,\n },\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: boundariesElement,\n },\n },\n ].filter(m => !modifierNames.includes(m.name));\n const extendedModifiers = [ ...baseModifiers, ...modifiers];\n\n const popperTransition = {\n ...Fade.defaultProps,\n ...transition,\n baseClass: fade ? transition.baseClass : '',\n timeout: fade ? transition.timeout : 0,\n }\n\n return (\n \n \n {({ ref, style, placement: popperPlacement, isReferenceHidden, arrowProps, update }) => (\n
\n {typeof children === 'function' ? children({ update }) : children}\n {!hideArrow && }\n
\n )}\n \n \n );\n }\n\n render() {\n this.setTargetNode(this.props.target);\n\n if (this.state.isOpen) {\n return this.props.container === 'inline' ?\n this.renderChildren() :\n ReactDOM.createPortal((
{this.renderChildren()}
), this.getContainerNode());\n }\n\n return null;\n }\n}\n\nPopperContent.propTypes = propTypes;\nPopperContent.defaultProps = defaultProps;\n\nexport default PopperContent;\n","import PropTypes from 'prop-types';\nimport { getTarget, targetPropType } from './utils';\n\nconst PopperTargetHelper = (props, context) => {\n context.popperManager.setTargetNode(getTarget(props.target));\n return null;\n};\n\nPopperTargetHelper.contextTypes = {\n popperManager: PropTypes.object.isRequired,\n};\n\nPopperTargetHelper.propTypes = {\n target: targetPropType.isRequired,\n};\n\nexport default PopperTargetHelper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PopperContent from './PopperContent';\nimport {\n getTarget,\n targetPropType,\n omit,\n PopperPlacements,\n mapToCssModules,\n DOMElement\n} from './utils';\n\nexport const propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n placement: PropTypes.oneOf(PopperPlacements),\n target: targetPropType.isRequired,\n container: targetPropType,\n isOpen: PropTypes.bool,\n disabled: PropTypes.bool,\n hideArrow: PropTypes.bool,\n boundariesElement: PropTypes.oneOfType([PropTypes.string, DOMElement]),\n className: PropTypes.string,\n innerClassName: PropTypes.string,\n arrowClassName: PropTypes.string,\n popperClassName: PropTypes.string,\n cssModule: PropTypes.object,\n toggle: PropTypes.func,\n autohide: PropTypes.bool,\n placementPrefix: PropTypes.string,\n delay: PropTypes.oneOfType([\n PropTypes.shape({ show: PropTypes.number, hide: PropTypes.number }),\n PropTypes.number\n ]),\n modifiers: PropTypes.array,\n strategy: PropTypes.string,\n offset: PropTypes.arrayOf(PropTypes.number),\n innerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.object\n ]),\n trigger: PropTypes.string,\n fade: PropTypes.bool,\n flip: PropTypes.bool,\n};\n\nconst DEFAULT_DELAYS = {\n show: 0,\n hide: 50\n};\n\nconst defaultProps = {\n isOpen: false,\n hideArrow: false,\n autohide: false,\n delay: DEFAULT_DELAYS,\n toggle: function () {},\n trigger: 'click',\n fade: true,\n};\n\nfunction isInDOMSubtree(element, subtreeRoot) {\n return subtreeRoot && (element === subtreeRoot || subtreeRoot.contains(element));\n}\n\nfunction isInDOMSubtrees(element, subtreeRoots = []) {\n return subtreeRoots && subtreeRoots.length && subtreeRoots.filter(subTreeRoot=> isInDOMSubtree(element, subTreeRoot))[0];\n}\n\nclass TooltipPopoverWrapper extends React.Component {\n constructor(props) {\n super(props);\n\n this._targets = [];\n this.currentTargetElement = null;\n this.addTargetEvents = this.addTargetEvents.bind(this);\n this.handleDocumentClick = this.handleDocumentClick.bind(this);\n this.removeTargetEvents = this.removeTargetEvents.bind(this);\n this.toggle = this.toggle.bind(this);\n this.showWithDelay = this.showWithDelay.bind(this);\n this.hideWithDelay = this.hideWithDelay.bind(this);\n this.onMouseOverTooltipContent = this.onMouseOverTooltipContent.bind(this);\n this.onMouseLeaveTooltipContent = this.onMouseLeaveTooltipContent.bind(\n this\n );\n this.show = this.show.bind(this);\n this.hide = this.hide.bind(this);\n this.onEscKeyDown = this.onEscKeyDown.bind(this);\n this.getRef = this.getRef.bind(this);\n this.state = { isOpen: props.isOpen };\n this._isMounted = false;\n }\n\n componentDidMount() {\n this._isMounted = true;\n this.updateTarget();\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n this.removeTargetEvents();\n this._targets = null;\n this.clearShowTimeout();\n this.clearHideTimeout();\n }\n\n static getDerivedStateFromProps(props, state) {\n if (props.isOpen && !state.isOpen) {\n return { isOpen: props.isOpen };\n }\n else return null;\n }\n\n onMouseOverTooltipContent() {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n if (this.state.isOpen && !this.props.isOpen) {\n this.toggle();\n }\n }\n }\n\n onMouseLeaveTooltipContent(e) {\n if (this.props.trigger.indexOf('hover') > -1 && !this.props.autohide) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n e.persist();\n this._hideTimeout = setTimeout(\n this.hide.bind(this, e),\n this.getDelay('hide')\n );\n }\n }\n\n onEscKeyDown(e) {\n if (e.key === 'Escape') {\n this.hide(e);\n }\n }\n\n getRef(ref) {\n const { innerRef } = this.props;\n if (innerRef) {\n if (typeof innerRef === 'function') {\n innerRef(ref);\n } else if (typeof innerRef === 'object') {\n innerRef.current = ref;\n }\n }\n this._popover = ref;\n }\n\n getDelay(key) {\n const { delay } = this.props;\n if (typeof delay === 'object') {\n return isNaN(delay[key]) ? DEFAULT_DELAYS[key] : delay[key];\n }\n return delay;\n }\n\n getCurrentTarget(target) {\n if (!target)\n return null;\n const index = this._targets.indexOf(target);\n if (index >= 0)\n return this._targets[index];\n return this.getCurrentTarget(target.parentElement);\n }\n\n show(e) {\n if (!this.props.isOpen) {\n this.clearShowTimeout();\n this.currentTargetElement = e ? e.currentTarget || this.getCurrentTarget(e.target) : null;\n if (e && e.composedPath && typeof e.composedPath === 'function') {\n const path = e.composedPath();\n this.currentTargetElement = (path && path[0]) || this.currentTargetElement;\n }\n this.toggle(e);\n }\n }\n\n showWithDelay(e) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n this._showTimeout = setTimeout(\n this.show.bind(this, e),\n this.getDelay('show')\n );\n }\n hide(e) {\n if (this.props.isOpen) {\n this.clearHideTimeout();\n this.currentTargetElement = null;\n this.toggle(e);\n }\n }\n\n hideWithDelay(e) {\n if (this._showTimeout) {\n this.clearShowTimeout();\n }\n this._hideTimeout = setTimeout(\n this.hide.bind(this, e),\n this.getDelay('hide')\n );\n }\n\n\n clearShowTimeout() {\n clearTimeout(this._showTimeout);\n this._showTimeout = undefined;\n }\n\n clearHideTimeout() {\n clearTimeout(this._hideTimeout);\n this._hideTimeout = undefined;\n }\n\n handleDocumentClick(e) {\n const triggers = this.props.trigger.split(' ');\n\n if (triggers.indexOf('legacy') > -1 && (this.props.isOpen || isInDOMSubtrees(e.target, this._targets))) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n if (this.props.isOpen && !isInDOMSubtree(e.target, this._popover)) {\n this.hideWithDelay(e);\n } else if (!this.props.isOpen) {\n this.showWithDelay(e);\n }\n } else if (triggers.indexOf('click') > -1 && isInDOMSubtrees(e.target, this._targets)) {\n if (this._hideTimeout) {\n this.clearHideTimeout();\n }\n\n if (!this.props.isOpen) {\n this.showWithDelay(e);\n } else {\n this.hideWithDelay(e);\n }\n }\n }\n\n addEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(target=> {\n target.addEventListener(type, handler, isBubble);\n });\n }\n\n removeEventOnTargets(type, handler, isBubble) {\n this._targets.forEach(target=> {\n target.removeEventListener(type, handler, isBubble);\n });\n }\n\n addTargetEvents() {\n if (this.props.trigger) {\n let triggers = this.props.trigger.split(' ');\n if (triggers.indexOf('manual') === -1) {\n if (triggers.indexOf('click') > -1 || triggers.indexOf('legacy') > -1) {\n document.addEventListener('click', this.handleDocumentClick, true);\n }\n\n if (this._targets && this._targets.length) {\n if (triggers.indexOf('hover') > -1) {\n this.addEventOnTargets(\n 'mouseover',\n this.showWithDelay,\n true\n );\n this.addEventOnTargets(\n 'mouseout',\n this.hideWithDelay,\n true\n );\n }\n if (triggers.indexOf('focus') > -1) {\n this.addEventOnTargets('focusin', this.show, true);\n this.addEventOnTargets('focusout', this.hide, true);\n }\n this.addEventOnTargets('keydown', this.onEscKeyDown, true);\n }\n }\n }\n }\n\n removeTargetEvents() {\n if (this._targets) {\n this.removeEventOnTargets(\n 'mouseover',\n this.showWithDelay,\n true\n );\n this.removeEventOnTargets(\n 'mouseout',\n this.hideWithDelay,\n true\n );\n this.removeEventOnTargets('keydown', this.onEscKeyDown, true);\n this.removeEventOnTargets('focusin', this.show, true);\n this.removeEventOnTargets('focusout', this.hide, true);\n }\n\n document.removeEventListener('click', this.handleDocumentClick, true)\n }\n\n updateTarget() {\n const newTarget = getTarget(this.props.target, true);\n if (newTarget !== this._targets) {\n this.removeTargetEvents();\n this._targets = newTarget ? Array.from(newTarget) : [];\n this.currentTargetElement = this.currentTargetElement || this._targets[0];\n this.addTargetEvents();\n }\n }\n\n toggle(e) {\n if (this.props.disabled || !this._isMounted) {\n return e && e.preventDefault();\n }\n\n return this.props.toggle(e);\n }\n\n render() {\n if (this.props.isOpen) {\n this.updateTarget();\n }\n\n const target = this.currentTargetElement || this._targets[0];\n if (!target) {\n return null;\n }\n\n const {\n className,\n cssModule,\n innerClassName,\n isOpen,\n hideArrow,\n boundariesElement,\n placement,\n placementPrefix,\n arrowClassName,\n popperClassName,\n container,\n modifiers,\n strategy,\n offset,\n fade,\n flip,\n children\n } = this.props;\n\n const attributes = omit(this.props, Object.keys(propTypes));\n\n const popperClasses = mapToCssModules(popperClassName, cssModule);\n\n const classes = mapToCssModules(innerClassName, cssModule);\n\n return (\n \n {({ update }) => (\n \n {typeof children === 'function' ? children({ update }) : children}\n \n )}\n\n \n );\n }\n}\n\nTooltipPopoverWrapper.propTypes = propTypes;\nTooltipPopoverWrapper.defaultProps = defaultProps;\n\nexport default TooltipPopoverWrapper;\n","import React from 'react';\nimport classNames from 'classnames';\nimport TooltipPopoverWrapper, { propTypes } from './TooltipPopoverWrapper';\n\nconst defaultProps = {\n placement: 'right',\n placementPrefix: 'bs-popover',\n trigger: 'click',\n offset: [0, 8]\n};\n\nconst Popover = (props) => {\n const popperClasses = classNames(\n 'popover',\n 'show',\n props.popperClassName\n );\n\n const classes = classNames(\n 'popover-inner',\n props.innerClassName\n );\n\n\n return (\n \n );\n};\n\nPopover.propTypes = propTypes;\nPopover.defaultProps = defaultProps;\n\n\nexport default Popover;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Popover from './Popover';\nimport { omit } from './utils';\n\nconst omitKeys = ['defaultOpen'];\n\nexport default class UncontrolledPopover extends Component {\n constructor(props) {\n super(props);\n\n this.state = { isOpen: props.defaultOpen || false };\n this.toggle = this.toggle.bind(this);\n }\n\n toggle() {\n this.setState({ isOpen: !this.state.isOpen });\n }\n\n render() {\n return ;\n }\n}\n\nUncontrolledPopover.propTypes = {\n defaultOpen: PropTypes.bool,\n ...Popover.propTypes\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'h3'\n};\n\nconst PopoverHeader = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'popover-header'\n ), cssModule);\n\n return (\n \n );\n};\n\nPopoverHeader.propTypes = propTypes;\nPopoverHeader.defaultProps = defaultProps;\n\nexport default PopoverHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'div'\n};\n\nconst PopoverBody = (props) => {\n const {\n className,\n cssModule,\n tag: Tag,\n ...attributes\n } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'popover-body'\n ), cssModule);\n\n return (\n \n );\n};\n\nPopoverBody.propTypes = propTypes;\nPopoverBody.defaultProps = defaultProps;\n\nexport default PopoverBody;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType, toNumber } from './utils';\n\nconst propTypes = {\n children: PropTypes.node,\n bar: PropTypes.bool,\n multi: PropTypes.bool,\n tag: tagPropType,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n min: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n max: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number,\n ]),\n animated: PropTypes.bool,\n striped: PropTypes.bool,\n color: PropTypes.string,\n className: PropTypes.string,\n barClassName: PropTypes.string,\n cssModule: PropTypes.object,\n style: PropTypes.object,\n barStyle: PropTypes.object,\n barAriaValueText: PropTypes.string,\n barAriaLabelledBy: PropTypes.string,\n};\n\nconst defaultProps = {\n tag: 'div',\n value: 0,\n min: 0,\n max: 100,\n style: {},\n barStyle: {}\n};\n\nconst Progress = (props) => {\n const {\n children,\n className,\n barClassName,\n cssModule,\n value,\n min,\n max,\n animated,\n striped,\n color,\n bar,\n multi,\n tag: Tag,\n style,\n barStyle,\n barAriaValueText,\n barAriaLabelledBy,\n ...attributes\n } = props;\n\n const percent = ((toNumber(value) / toNumber(max)) * 100);\n\n const progressClasses = mapToCssModules(classNames(\n className,\n 'progress'\n ), cssModule);\n\n const progressBarClasses = mapToCssModules(classNames(\n 'progress-bar',\n bar ? className || barClassName : barClassName,\n animated ? 'progress-bar-animated' : null,\n color ? `bg-${color}` : null,\n striped || animated ? 'progress-bar-striped' : null\n ), cssModule);\n\n const progressBarProps = {\n className: progressBarClasses,\n style: {\n ...(bar ? style : {}),\n ...barStyle,\n width: `${percent}%`,\n },\n role: 'progressbar',\n 'aria-valuenow': value,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuetext': barAriaValueText,\n 'aria-labelledby': barAriaLabelledBy,\n children: children\n };\n\n if (bar) {\n return (\n \n );\n }\n\n return (\n \n {multi ? children :
}\n \n );\n};\n\nProgress.propTypes = propTypes;\nProgress.defaultProps = defaultProps;\n\nexport default Progress;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { canUseDOM } from './utils';\n\nconst propTypes = {\n children: PropTypes.node.isRequired,\n node: PropTypes.any\n};\n\nclass Portal extends React.Component {\n componentWillUnmount() {\n if (this.defaultNode) {\n document.body.removeChild(this.defaultNode);\n }\n this.defaultNode = null;\n }\n\n render() {\n if (!canUseDOM) {\n return null;\n }\n\n if (!this.props.node && !this.defaultNode) {\n this.defaultNode = document.createElement('div');\n document.body.appendChild(this.defaultNode);\n }\n\n return ReactDOM.createPortal(\n this.props.children,\n this.props.node || this.defaultNode\n );\n }\n}\n\nPortal.propTypes = propTypes;\n\nexport default Portal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Portal from './Portal';\nimport Fade from './Fade';\nimport {\n getOriginalBodyPadding,\n conditionallyUpdateScrollbar,\n setScrollbarWidth,\n mapToCssModules,\n omit,\n focusableElements,\n TransitionTimeouts,\n keyCodes,\n targetPropType,\n getTarget\n} from './utils';\n\nfunction noop() { }\n\nconst FadePropTypes = PropTypes.shape(Fade.propTypes);\n\nconst propTypes = {\n isOpen: PropTypes.bool,\n autoFocus: PropTypes.bool,\n centered: PropTypes.bool,\n fullscreen: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['sm', 'md', 'lg', 'xl']),\n ]),\n scrollable: PropTypes.bool,\n size: PropTypes.string,\n toggle: PropTypes.func,\n keyboard: PropTypes.bool,\n role: PropTypes.string,\n labelledBy: PropTypes.string,\n backdrop: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.oneOf(['static'])\n ]),\n onEnter: PropTypes.func,\n onExit: PropTypes.func,\n onOpened: PropTypes.func,\n onClosed: PropTypes.func,\n children: PropTypes.node,\n className: PropTypes.string,\n wrapClassName: PropTypes.string,\n modalClassName: PropTypes.string,\n backdropClassName: PropTypes.string,\n contentClassName: PropTypes.string,\n external: PropTypes.node,\n fade: PropTypes.bool,\n cssModule: PropTypes.object,\n zIndex: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.string,\n ]),\n backdropTransition: FadePropTypes,\n modalTransition: FadePropTypes,\n innerRef: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.string,\n PropTypes.func,\n ]),\n unmountOnClose: PropTypes.bool,\n returnFocusAfterClose: PropTypes.bool,\n container: targetPropType,\n trapFocus: PropTypes.bool\n};\n\nconst propsToOmit = Object.keys(propTypes);\n\nconst defaultProps = {\n isOpen: false,\n autoFocus: true,\n centered: false,\n scrollable: false,\n role: 'dialog',\n backdrop: true,\n keyboard: true,\n zIndex: 1050,\n fade: true,\n onOpened: noop,\n onClosed: noop,\n modalTransition: {\n timeout: TransitionTimeouts.Modal,\n },\n backdropTransition: {\n mountOnEnter: true,\n timeout: TransitionTimeouts.Fade, // uses standard fade transition\n },\n unmountOnClose: true,\n returnFocusAfterClose: true,\n container: 'body',\n trapFocus: false\n};\n\nclass Modal extends React.Component {\n constructor(props) {\n super(props);\n\n this._element = null;\n this._originalBodyPadding = null;\n this.getFocusableChildren = this.getFocusableChildren.bind(this);\n this.handleBackdropClick = this.handleBackdropClick.bind(this);\n this.handleBackdropMouseDown = this.handleBackdropMouseDown.bind(this);\n this.handleEscape = this.handleEscape.bind(this);\n this.handleStaticBackdropAnimation = this.handleStaticBackdropAnimation.bind(this);\n this.handleTab = this.handleTab.bind(this);\n this.onOpened = this.onOpened.bind(this);\n this.onClosed = this.onClosed.bind(this);\n this.manageFocusAfterClose = this.manageFocusAfterClose.bind(this);\n this.clearBackdropAnimationTimeout = this.clearBackdropAnimationTimeout.bind(this);\n this.trapFocus = this.trapFocus.bind(this);\n\n this.state = {\n isOpen: false,\n showStaticBackdropAnimation: false\n };\n }\n\n componentDidMount() {\n const { isOpen, autoFocus, onEnter } = this.props;\n\n if (isOpen) {\n this.init();\n this.setState({ isOpen: true })\n if (autoFocus) {\n this.setFocus();\n }\n }\n\n if (onEnter) {\n onEnter();\n }\n\n // traps focus inside the Modal, even if the browser address bar is focused\n document.addEventListener('focus', this.trapFocus, true);\n\n this._isMounted = true;\n }\n\n componentDidUpdate(prevProps, prevState) {\n if (this.props.isOpen && !prevProps.isOpen) {\n this.init();\n this.setState({ isOpen: true});\n // let render() renders Modal Dialog first\n return;\n }\n\n // now Modal Dialog is rendered and we can refer this._element and this._dialog\n if (this.props.autoFocus && this.state.isOpen && !prevState.isOpen) {\n this.setFocus();\n }\n\n if (this._element && prevProps.zIndex !== this.props.zIndex) {\n this._element.style.zIndex = this.props.zIndex;\n }\n }\n\n componentWillUnmount() {\n this.clearBackdropAnimationTimeout();\n\n if (this.props.onExit) {\n this.props.onExit();\n }\n\n if (this._element) {\n this.destroy();\n if (this.props.isOpen || this.state.isOpen) {\n this.close();\n }\n }\n\n document.removeEventListener('focus', this.trapFocus, true);\n this._isMounted = false;\n }\n\n trapFocus (ev) {\n if (!this.props.trapFocus) {\n return;\n }\n\n if (!this._element) //element is not attached\n return;\n\n if (this._dialog && this._dialog.parentNode === ev.target) // initial focus when the Modal is opened\n return;\n\n if (this.modalIndex < (Modal.openCount - 1)) // last opened modal\n return;\n\n const children = this.getFocusableChildren();\n\n for (let i = 0; i < children.length; i++) { // focus is already inside the Modal\n if (children[i] === ev.target)\n return;\n }\n\n if (children.length > 0) { // otherwise focus the first focusable element in the Modal\n ev.preventDefault();\n ev.stopPropagation();\n children[0].focus();\n }\n }\n\n onOpened(node, isAppearing) {\n this.props.onOpened();\n (this.props.modalTransition.onEntered || noop)(node, isAppearing);\n }\n\n onClosed(node) {\n const { unmountOnClose } = this.props;\n // so all methods get called before it is unmounted\n this.props.onClosed();\n (this.props.modalTransition.onExited || noop)(node);\n\n if (unmountOnClose) {\n this.destroy();\n }\n this.close();\n\n if (this._isMounted) {\n this.setState({ isOpen: false });\n }\n }\n\n setFocus() {\n if (this._dialog && this._dialog.parentNode && typeof this._dialog.parentNode.focus === 'function') {\n this._dialog.parentNode.focus();\n }\n }\n\n getFocusableChildren() {\n return this._element.querySelectorAll(focusableElements.join(', '));\n }\n\n getFocusedChild() {\n let currentFocus;\n const focusableChildren = this.getFocusableChildren();\n\n try {\n currentFocus = document.activeElement;\n } catch (err) {\n currentFocus = focusableChildren[0];\n }\n return currentFocus;\n }\n\n // not mouseUp because scrollbar fires it, shouldn't close when user scrolls\n handleBackdropClick(e) {\n if (e.target === this._mouseDownElement) {\n e.stopPropagation();\n\n const backdrop = this._dialog ? this._dialog.parentNode : null;\n\n if (backdrop && e.target === backdrop && this.props.backdrop === 'static') {\n this.handleStaticBackdropAnimation();\n }\n\n if (!this.props.isOpen || this.props.backdrop !== true) return;\n\n if (backdrop && e.target === backdrop && this.props.toggle) {\n this.props.toggle(e);\n }\n }\n }\n\n handleTab(e) {\n if (e.which !== 9) return;\n if (this.modalIndex < (Modal.openCount - 1)) return; // last opened modal\n\n const focusableChildren = this.getFocusableChildren();\n const totalFocusable = focusableChildren.length;\n if (totalFocusable === 0) return;\n const currentFocus = this.getFocusedChild();\n\n let focusedIndex = 0;\n\n for (let i = 0; i < totalFocusable; i += 1) {\n if (focusableChildren[i] === currentFocus) {\n focusedIndex = i;\n break;\n }\n }\n\n if (e.shiftKey && focusedIndex === 0) {\n e.preventDefault();\n focusableChildren[totalFocusable - 1].focus();\n } else if (!e.shiftKey && focusedIndex === totalFocusable - 1) {\n e.preventDefault();\n focusableChildren[0].focus();\n }\n }\n\n handleBackdropMouseDown(e) {\n this._mouseDownElement = e.target;\n }\n\n handleEscape(e) {\n if (this.props.isOpen && e.keyCode === keyCodes.esc && this.props.toggle) {\n if (this.props.keyboard) {\n e.preventDefault();\n e.stopPropagation();\n\n this.props.toggle(e);\n }\n else if (this.props.backdrop === 'static') {\n e.preventDefault();\n e.stopPropagation();\n\n this.handleStaticBackdropAnimation();\n }\n }\n }\n\n handleStaticBackdropAnimation() {\n this.clearBackdropAnimationTimeout();\n this.setState({ showStaticBackdropAnimation: true });\n this._backdropAnimationTimeout = setTimeout(() => {\n this.setState({ showStaticBackdropAnimation: false });\n }, 100);\n }\n\n init() {\n try {\n this._triggeringElement = document.activeElement;\n } catch (err) {\n this._triggeringElement = null;\n }\n\n if (!this._element) {\n this._element = document.createElement('div');\n this._element.setAttribute('tabindex', '-1');\n this._element.style.position = 'relative';\n this._element.style.zIndex = this.props.zIndex;\n this._mountContainer = getTarget(this.props.container);\n this._mountContainer.appendChild(this._element);\n }\n\n this._originalBodyPadding = getOriginalBodyPadding();\n conditionallyUpdateScrollbar();\n\n if (Modal.openCount === 0) {\n document.body.className = classNames(\n document.body.className,\n mapToCssModules('modal-open', this.props.cssModule)\n );\n }\n\n this.modalIndex = Modal.openCount;\n Modal.openCount += 1;\n }\n\n destroy() {\n if (this._element) {\n this._mountContainer.removeChild(this._element);\n this._element = null;\n }\n\n this.manageFocusAfterClose();\n }\n\n manageFocusAfterClose() {\n if (this._triggeringElement) {\n const { returnFocusAfterClose } = this.props;\n if (this._triggeringElement.focus && returnFocusAfterClose) this._triggeringElement.focus();\n this._triggeringElement = null;\n }\n }\n\n close() {\n if (Modal.openCount <= 1) {\n const modalOpenClassName = mapToCssModules('modal-open', this.props.cssModule);\n // Use regex to prevent matching `modal-open` as part of a different class, e.g. `my-modal-opened`\n const modalOpenClassNameRegex = new RegExp(`(^| )${modalOpenClassName}( |$)`);\n document.body.className = document.body.className.replace(modalOpenClassNameRegex, ' ').trim();\n }\n this.manageFocusAfterClose();\n Modal.openCount = Math.max(0, Modal.openCount - 1);\n\n setScrollbarWidth(this._originalBodyPadding);\n }\n\n renderModalDialog() {\n const attributes = omit(this.props, propsToOmit);\n const dialogBaseClass = 'modal-dialog';\n\n return (\n {\n this._dialog = c;\n }}\n >\n \n {this.props.children}\n
\n \n );\n }\n\n render() {\n const {\n unmountOnClose\n } = this.props;\n\n if (!!this._element && (this.state.isOpen || !unmountOnClose)) {\n const isModalHidden = !!this._element && !this.state.isOpen && !unmountOnClose;\n this._element.style.display = isModalHidden ? 'none' : 'block';\n\n const {\n wrapClassName,\n modalClassName,\n backdropClassName,\n cssModule,\n isOpen,\n backdrop,\n role,\n labelledBy,\n external,\n innerRef,\n } = this.props;\n\n const modalAttributes = {\n onClick: this.handleBackdropClick,\n onMouseDown: this.handleBackdropMouseDown,\n onKeyUp: this.handleEscape,\n onKeyDown: this.handleTab,\n style: { display: 'block' },\n 'aria-labelledby': labelledBy,\n role,\n tabIndex: '-1'\n };\n\n const hasTransition = this.props.fade;\n const modalTransition = {\n ...Fade.defaultProps,\n ...this.props.modalTransition,\n baseClass: hasTransition ? this.props.modalTransition.baseClass : '',\n timeout: hasTransition ? this.props.modalTransition.timeout : 0,\n };\n const backdropTransition = {\n ...Fade.defaultProps,\n ...this.props.backdropTransition,\n baseClass: hasTransition ? this.props.backdropTransition.baseClass : '',\n timeout: hasTransition ? this.props.backdropTransition.timeout : 0,\n };\n\n const Backdrop = backdrop && (\n hasTransition ?\n ()\n :
\n );\n\n return (\n \n
\n \n {external}\n {this.renderModalDialog()}\n \n {Backdrop}\n
\n
\n );\n }\n return null;\n }\n\n clearBackdropAnimationTimeout() {\n if (this._backdropAnimationTimeout) {\n clearTimeout(this._backdropAnimationTimeout);\n this._backdropAnimationTimeout = undefined;\n }\n }\n}\n\nModal.propTypes = propTypes;\nModal.defaultProps = defaultProps;\nModal.openCount = 0;\n\nexport default Modal;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\n\nconst propTypes = {\n tag: tagPropType,\n wrapTag: tagPropType,\n toggle: PropTypes.func,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n children: PropTypes.node,\n closeAriaLabel: PropTypes.string,\n close: PropTypes.object,\n};\n\nconst defaultProps = {\n tag: 'h5',\n wrapTag: 'div',\n closeAriaLabel: 'Close',\n};\n\nconst ModalHeader = (props) => {\n let closeButton;\n const {\n className,\n cssModule,\n children,\n toggle,\n tag: Tag,\n wrapTag: WrapTag,\n closeAriaLabel,\n close,\n ...attributes } = props;\n\n const classes = mapToCssModules(classNames(\n className,\n 'modal-header'\n ), cssModule);\n\n if (!close && toggle) {\n closeButton = (\n \n )\n}\n\nPlaceholderButton.propTypes = propTypes;\nPlaceholderButton.defaultProps = defaultProps;\n\nexport default PlaceholderButton ","(() => {\n if ( typeof window !== 'object' || typeof window.CustomEvent === 'function' ) return;\n\n const CustomEvent = (( event, params ) => {\n params = params || { bubbles: false, cancelable: false, detail: null };\n var evt = document.createEvent( 'CustomEvent' );\n evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );\n return evt;\n });\n\n window.CustomEvent = CustomEvent;\n})();\n\n(() => {\n if ( typeof Object.values === 'function' ) return;\n\n const values = ( (O) => Object.keys(O).map((key) => O[key]) );\n\n Object.values = values;\n})();\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar EventEmitter = require('events').EventEmitter;\nvar EventTarget = /** @class */ (function () {\n function EventTarget() {\n Object.defineProperties(this, {\n _eventEmitter: {\n value: new EventEmitter()\n }\n });\n }\n EventTarget.prototype.dispatchEvent = function (event) {\n return this._eventEmitter.emit(event.type, event);\n };\n EventTarget.prototype.addEventListener = function () {\n var _a;\n return (_a = this._eventEmitter).addListener.apply(_a, __spreadArray([], __read(arguments)));\n };\n EventTarget.prototype.removeEventListener = function () {\n var _a;\n return (_a = this._eventEmitter).removeListener.apply(_a, __spreadArray([], __read(arguments)));\n };\n return EventTarget;\n}());\nmodule.exports = EventTarget;\n//# sourceMappingURL=eventtarget.js.map","/**\n * Copyright (c) 2011-2022 Isaac Z. Schlueter\n * Licensed under the ISC License.\n *\n * Copied from https://github.com/isaacs/inherits (2.0.4)\n*/\nmodule.exports = function inherits(ctor, superCtor) {\n if (ctor && superCtor) {\n ctor.super_ = superCtor;\n if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n }\n else {\n // old school shim for old browsers\n var TempCtor = /** @class */ (function () {\n function TempCtor() {\n }\n return TempCtor;\n }());\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n }\n};\n//# sourceMappingURL=inherits.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('../../eventemitter');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, valueToJSON = _a.valueToJSON;\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar nInstances = 0;\n/**\n * A {@link Track} represents a stream of audio, video, or data.\n * @extends EventEmitter\n * @property {Track.Kind} kind - The {@link Track}'s kind\n * @property {string} name - The {@link Track}'s name\n */\nvar Track = /** @class */ (function (_super) {\n __extends(Track, _super);\n /**\n * Construct a {@link Track}.\n * @param {Track.ID} id - The {@link Track}'s ID\n * @param {Track.Kind} kind - The {@link Track}'s kind\n * @param {{ log: Log, name: ?string }} options\n */\n function Track(id, kind, options) {\n var _this = this;\n options = Object.assign({\n name: id,\n log: null,\n logLevel: DEFAULT_LOG_LEVEL\n }, options);\n _this = _super.call(this) || this;\n var name = String(options.name);\n var logLevels = buildLogLevels(options.logLevel);\n var log = options.log\n ? options.log.createLog('media', _this)\n : new Log('media', _this, logLevels, options.loggerName);\n Object.defineProperties(_this, {\n _instanceId: {\n value: ++nInstances\n },\n _log: {\n value: log\n },\n kind: {\n enumerable: true,\n value: kind\n },\n name: {\n enumerable: true,\n value: name\n }\n });\n return _this;\n }\n Track.prototype.toJSON = function () {\n return valueToJSON(this);\n };\n return Track;\n}(EventEmitter));\n/**\n * The {@link Track} ID is a string identifier for the {@link Track}.\n * @typedef {string} Track.ID\n */\n/**\n * The {@link Track} kind is either \"audio\", \"video\", or \"data\".\n * @typedef {string} Track.Kind\n */\n/**\n * The {@link Track}'s priority can be \"low\", \"standard\", or \"high\".\n * @typedef {string} Track.Priority\n */\n/**\n * The {@link Track} SID is a unique string identifier for the {@link Track}\n * that is published to a {@link Room}.\n * @typedef {string} Track.SID\n */\n/**\n * A {@link DataTrack} is a {@link LocalDataTrack} or {@link RemoteDataTrack}.\n * @typedef {LocalDataTrack|RemoteDataTrack} DataTrack\n */\n/**\n * A {@link LocalTrack} is a {@link LocalAudioTrack}, {@link LocalVideoTrack},\n * or {@link LocalDataTrack}.\n * @typedef {LocalAudioTrack|LocalVideoTrack|LocalDataTrack} LocalTrack\n */\n/**\n * {@link LocalTrack} options\n * @typedef {object} LocalTrackOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n * @property {string} [name] - The {@link LocalTrack}'s name; by default,\n * it is set to the {@link LocalTrack}'s ID.\n */\n/**\n * A {@link RemoteTrack} is a {@link RemoteAudioTrack},\n * {@link RemoteVideoTrack}, or {@link RemoteDataTrack}.\n * @typedef {RemoteAudioTrack|RemoteVideoTrack|RemoteDataTrack} RemoteTrack\n */\nmodule.exports = Track;\n//# sourceMappingURL=index.js.map","'use strict';\n/**\n * The {@link DocumentVisibilityMonitor} monitors the visibility state of the DOM\n * and executes the attached listeners in phase order when the DOM is visible.\n */\nvar DocumentVisibilityMonitor = /** @class */ (function () {\n /**\n * Constructor.\n * @param {number} [nPhases=1] - the number of phases\n */\n function DocumentVisibilityMonitor(nPhases) {\n var _this = this;\n if (nPhases === void 0) { nPhases = 1; }\n Object.defineProperties(this, {\n _listeners: {\n value: []\n },\n _onVisibilityChange: {\n value: function () {\n _this._emitVisible(document.visibilityState === 'visible');\n }\n }\n });\n for (var i = 0; i < nPhases; i++) {\n this._listeners.push([]);\n }\n }\n /**\n * clears the state.\n */\n DocumentVisibilityMonitor.prototype.clear = function () {\n var nPhases = this._listeners.length;\n for (var i = 0; i < nPhases; i++) {\n this._listeners[i] = [];\n }\n };\n DocumentVisibilityMonitor.prototype._listenerCount = function () {\n return this._listeners.reduce(function (count, phaseListeners) { return count + phaseListeners.length; }, 0);\n };\n /**\n * Call all the listeners. Makes sure that all listeners for a given phase\n * are executed before calling the listeners of the next phase.\n * @private\n */\n DocumentVisibilityMonitor.prototype._emitVisible = function (isVisible) {\n var _this = this;\n var promise = Promise.resolve();\n var _loop_1 = function (phase) {\n promise = promise.then(function () { return _this._emitVisiblePhase(phase, isVisible); });\n };\n for (var phase = 1; phase <= this._listeners.length; phase++) {\n _loop_1(phase);\n }\n return promise;\n };\n /**\n * Call all the listeners for a given phase.\n * @private\n */\n DocumentVisibilityMonitor.prototype._emitVisiblePhase = function (phase, isVisible) {\n var phaseListeners = this._listeners[phase - 1];\n return Promise.all(phaseListeners.map(function (listener) {\n var ret = listener(isVisible);\n return ret instanceof Promise ? ret : Promise.resolve(ret);\n }));\n };\n /**\n * Start listening to the DOM visibility state change.\n * @private\n */\n DocumentVisibilityMonitor.prototype._start = function () {\n document.addEventListener('visibilitychange', this._onVisibilityChange);\n };\n /**\n * Stop listening to the DOM visibility state change.\n * @private\n */\n DocumentVisibilityMonitor.prototype._stop = function () {\n document.removeEventListener('visibilitychange', this._onVisibilityChange);\n };\n /**\n * Listen for the DOM visibility changes at the given phase.\n * @param {number} phase\n * @param {function} listener\n * @returns {this}\n */\n DocumentVisibilityMonitor.prototype.onVisibilityChange = function (phase, listener) {\n if (typeof phase !== 'number' || phase <= 0 || phase > this._listeners.length) {\n throw new Error('invalid phase: ', phase);\n }\n var phaseListeners = this._listeners[phase - 1];\n phaseListeners.push(listener);\n if (this._listenerCount() === 1) {\n this._start();\n }\n return this;\n };\n /**\n * Stop listening for the DOM visibility change at the given phase.\n * @param {number} phase\n * @param {function} listener\n * @returns {this}\n */\n DocumentVisibilityMonitor.prototype.offVisibilityChange = function (phase, listener) {\n if (typeof phase !== 'number' || phase <= 0 || phase > this._listeners.length) {\n throw new Error('invalid phase: ', phase);\n }\n var phaseListeners = this._listeners[phase - 1];\n var index = phaseListeners.indexOf(listener);\n if (index !== -1) {\n phaseListeners.splice(index, 1);\n if (this._listenerCount() === 0) {\n this._stop();\n }\n }\n return this;\n };\n return DocumentVisibilityMonitor;\n}());\nmodule.exports = new DocumentVisibilityMonitor(2);\n//# sourceMappingURL=documentvisibilitymonitor.js.map","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\n/**\n * A Promise that can be canceled with {@link CancelablePromise#cancel}.\n * @extends Promise\n*/\nvar CancelablePromise = /** @class */ (function () {\n /**\n * Construct a new {@link CancelablePromise}.\n * @param {CancelablePromise.OnCreate} onCreate\n * @param {CancelablePromise.OnCancel} onCancel\n */ /**\n * A function to be called on {@link CancelablePromise} creation\n * @typedef {function} CancelablePromise.OnCreate\n * @param {function(*)} resolve\n * @param {function(*)} reject\n * @param {function(): boolean} isCanceled\n */ /**\n * A function to be called when {@link CancelablePromise#cancel} is called\n * @typedef {function} CancelablePromise.OnCancel\n */\n function CancelablePromise(onCreate, onCancel) {\n var _this = this;\n /* istanbul ignore next */\n Object.defineProperties(this, {\n _isCancelable: {\n writable: true,\n value: true\n },\n _isCanceled: {\n writable: true,\n value: false\n },\n _onCancel: {\n value: onCancel\n }\n });\n Object.defineProperty(this, '_promise', {\n value: new Promise(function (resolve, reject) {\n onCreate(function (value) {\n _this._isCancelable = false;\n resolve(value);\n }, function (reason) {\n _this._isCancelable = false;\n reject(reason);\n }, function () { return _this._isCanceled; });\n })\n });\n }\n /**\n * Create a synchronously-rejected {@link CancelablePromise}.\n * @param {*} reason\n * @returns {Promise<*>}\n */\n CancelablePromise.reject = function (reason) {\n return new CancelablePromise(function rejected(resolve, reject) {\n reject(reason);\n }, function onCancel() {\n // Do nothing.\n });\n };\n /**\n * Create a synchronously-resolved {@link CancelablePromise}.\n * @param {*|Promise<*>|Thenable<*>} result\n * @returns {CancelablePromise<*>}\n */\n CancelablePromise.resolve = function (result) {\n return new CancelablePromise(function resolved(resolve) {\n resolve(result);\n }, function onCancel() {\n // Do nothing.\n });\n };\n /**\n * Attempt to cancel the {@link CancelablePromise}.\n * @returns {this}\n */\n CancelablePromise.prototype.cancel = function () {\n if (this._isCancelable) {\n this._isCanceled = true;\n this._onCancel();\n }\n return this;\n };\n /**\n * @param {function} onRejected\n * @returns {CancelablePromise}\n */\n CancelablePromise.prototype.catch = function () {\n var args = [].slice.call(arguments);\n var promise = this._promise;\n return new CancelablePromise(function onCreate(resolve, reject) {\n promise.catch.apply(promise, __spreadArray([], __read(args))).then(resolve, reject);\n }, this._onCancel);\n };\n /**\n * @param {?function} onResolved\n * @param {function} [onRejected]\n * @returns {CancelablePromise}\n */\n CancelablePromise.prototype.then = function () {\n var args = [].slice.call(arguments);\n var promise = this._promise;\n return new CancelablePromise(function onCreate(resolve, reject) {\n promise.then.apply(promise, __spreadArray([], __read(args))).then(resolve, reject);\n }, this._onCancel);\n };\n /**\n * @param {?function} onFinally\n * @returns {CancelablePromise}\n */\n CancelablePromise.prototype.finally = function () {\n var args = [].slice.call(arguments);\n var promise = this._promise;\n return new CancelablePromise(function onCreate(resolve, reject) {\n promise.finally.apply(promise, __spreadArray([], __read(args))).then(resolve, reject);\n }, this._onCancel);\n };\n return CancelablePromise;\n}());\nmodule.exports = CancelablePromise;\n//# sourceMappingURL=cancelablepromise.js.map","/* eslint new-cap:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar TrackPublication = require('./trackpublication');\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\n/**\n * A {@link LocalTrackPublication} is a {@link LocalTrack} that has been\n * published to a {@link Room}.\n * @extends TrackPublication\n * @property {boolean} isTrackEnabled - whether the published {@link LocalTrack}\n * is enabled\n * @property {Track.Kind} kind - kind of the published {@link LocalTrack}\n * @property {Track.Priority} priority - the publish priority of the {@link LocalTrack}\n * @property {LocalTrack} track - the {@link LocalTrack}\n * @emits LocalTrackPublication#warning\n * @emits LocalTrackPublication#warningsCleared\n */\nvar LocalTrackPublication = /** @class */ (function (_super) {\n __extends(LocalTrackPublication, _super);\n /**\n * Construct a {@link LocalTrackPublication}.\n * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n * {@link LocalTrackPublicationSignaling}\n * @param {LocalTrack} track - The {@link LocalTrack}\n * @param {function(LocalTrackPublication): void} unpublish - The callback\n * that unpublishes the {@link LocalTrackPublication}\n * @param {TrackPublicationOptions} options - {@link LocalTrackPublication}\n * options\n */\n function LocalTrackPublication(signaling, track, unpublish, options) {\n var _this = _super.call(this, track.name, signaling.sid, options) || this;\n Object.defineProperties(_this, {\n _reemitSignalingEvent: {\n value: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _this.emit.apply(_this, __spreadArray([args && args.length ? 'warning' : 'warningsCleared'], __read(args)));\n }\n },\n _reemitTrackEvent: {\n value: function () { return _this.emit(_this.isTrackEnabled\n ? 'trackEnabled'\n : 'trackDisabled'); }\n },\n _signaling: {\n value: signaling\n },\n _unpublish: {\n value: unpublish\n },\n isTrackEnabled: {\n enumerable: true,\n get: function () {\n return this.track.kind === 'data' ? true : this.track.isEnabled;\n }\n },\n kind: {\n enumerable: true,\n value: track.kind\n },\n priority: {\n enumerable: true,\n get: function () {\n return signaling.updatedPriority;\n }\n },\n track: {\n enumerable: true,\n value: track\n }\n });\n ['disabled', 'enabled'].forEach(function (name) {\n return track.on(name, _this._reemitTrackEvent);\n });\n ['warning', 'warningsCleared'].forEach(function (name) {\n return signaling.on(name, _this._reemitSignalingEvent);\n });\n return _this;\n }\n LocalTrackPublication.prototype.toString = function () {\n return \"[LocalTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n /**\n * Update the {@link Track.Priority} of the published {@link LocalTrack}.\n * @param {Track.Priority} priority - the new {@link Track.priority}\n * @returns {this}\n * @throws {RangeError}\n */\n LocalTrackPublication.prototype.setPriority = function (priority) {\n var priorityValues = Object.values(trackPriority);\n if (!priorityValues.includes(priority)) {\n throw E.INVALID_VALUE('priority', priorityValues);\n }\n this._signaling.setPriority(priority);\n return this;\n };\n /**\n * Unpublish a {@link LocalTrackPublication}. This means that the media\n * from this {@link LocalTrackPublication} is no longer available to the\n * {@link Room}'s {@link RemoteParticipant}s.\n * @returns {this}\n */\n LocalTrackPublication.prototype.unpublish = function () {\n var _this = this;\n ['disabled', 'enabled'].forEach(function (name) {\n return _this.track.removeListener(name, _this._reemitTrackEvent);\n });\n ['warning', 'warningsCleared'].forEach(function (name) {\n return _this._signaling.removeListener(name, _this._reemitSignalingEvent);\n });\n this._unpublish(this);\n return this;\n };\n return LocalTrackPublication;\n}(TrackPublication));\n/**\n * The published {@link LocalTrack} encountered a warning.\n * This event is only raised if you enabled warnings using notifyWarnings in ConnectOptions.\n * @event LocalTrackPublication#warning\n * @param {string} name - The warning that was raised.\n */\n/**\n * The published {@link LocalTrack} cleared all warnings.\n * This event is only raised if you enabled warnings using notifyWarnings in ConnectOptions.\n * @event LocalTrackPublication#warningsCleared\n */\nmodule.exports = LocalTrackPublication;\n//# sourceMappingURL=localtrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TrackPublication = require('./trackpublication');\n/**\n * A {@link RemoteTrackPublication} represents a {@link RemoteTrack} that has\n * been published to a {@link Room}.\n * @extends TrackPublication\n * @property {boolean} isSubscribed - whether the published {@link RemoteTrack}\n * is subscribed to\n * @property {boolean} isTrackEnabled - whether the published\n * {@link RemoteTrack} is enabled\n * @property {Track.Kind} kind - kind of the published {@link RemoteTrack}\n * @property {Track.Priority} publishPriority - the {@link Track.Priority} of the published\n * {@link RemoteTrack} set by the {@link RemoteParticipant}\n * @property {?RemoteTrack} track - Unless you have subscribed to the\n * {@link RemoteTrack}, this property is null\n * @emits RemoteTrackPublication#publishPriorityChanged\n * @emits RemoteTrackPublication#subscribed\n * @emits RemoteTrackPublication#subscriptionFailed\n * @emits RemoteTrackPublication#trackDisabled\n * @emits RemoteTrackPublication#trackEnabled\n * @emits RemoteTrackPublication#trackSwitchedOff\n * @emits RemoteTrackPublication#trackSwitchedOn\n * @emits RemoteTrackPublication#unsubscribed\n *\n */\nvar RemoteTrackPublication = /** @class */ (function (_super) {\n __extends(RemoteTrackPublication, _super);\n /**\n * Construct a {@link RemoteTrackPublication}.\n * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n * options\n */\n function RemoteTrackPublication(signaling, options) {\n var _this = _super.call(this, signaling.name, signaling.sid, options) || this;\n Object.defineProperties(_this, {\n _signaling: {\n value: signaling\n },\n _track: {\n value: null,\n writable: true\n },\n isSubscribed: {\n enumerable: true,\n get: function () {\n return !!this._track;\n }\n },\n isTrackEnabled: {\n enumerable: true,\n get: function () {\n return signaling.isEnabled;\n }\n },\n kind: {\n enumerable: true,\n value: signaling.kind\n },\n publishPriority: {\n enumerable: true,\n get: function () {\n return signaling.priority;\n }\n },\n track: {\n enumerable: true,\n get: function () {\n return this._track;\n }\n }\n });\n // remember original state, and fire events only on change.\n var error = signaling.error, isEnabled = signaling.isEnabled, isSwitchedOff = signaling.isSwitchedOff, priority = signaling.priority;\n signaling.on('updated', function () {\n if (error !== signaling.error) {\n error = signaling.error;\n _this.emit('subscriptionFailed', signaling.error);\n return;\n }\n if (isEnabled !== signaling.isEnabled) {\n isEnabled = signaling.isEnabled;\n if (_this.track) {\n _this.track._setEnabled(signaling.isEnabled);\n }\n _this.emit(signaling.isEnabled ? 'trackEnabled' : 'trackDisabled');\n }\n if (isSwitchedOff !== signaling.isSwitchedOff) {\n _this._log.debug(_this.trackSid + \": \" + (isSwitchedOff ? 'OFF' : 'ON') + \" => \" + (signaling.isSwitchedOff ? 'OFF' : 'ON'));\n isSwitchedOff = signaling.isSwitchedOff;\n if (_this.track) {\n _this.track._setSwitchedOff(signaling.isSwitchedOff);\n _this.emit(isSwitchedOff ? 'trackSwitchedOff' : 'trackSwitchedOn', _this.track);\n }\n else if (isSwitchedOff) {\n _this._log.warn('Track was not subscribed when switched Off.');\n }\n }\n if (priority !== signaling.priority) {\n priority = signaling.priority;\n _this.emit('publishPriorityChanged', priority);\n }\n });\n return _this;\n }\n RemoteTrackPublication.prototype.toString = function () {\n return \"[RemoteTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n /**\n * @private\n * @param {RemoteTrack} track\n */\n RemoteTrackPublication.prototype._subscribed = function (track) {\n if (!this._track && track) {\n this._track = track;\n this.emit('subscribed', track);\n }\n };\n /**\n * @private\n */\n RemoteTrackPublication.prototype._unsubscribe = function () {\n if (this._track) {\n var track = this._track;\n this._track = null;\n this.emit('unsubscribed', track);\n }\n };\n return RemoteTrackPublication;\n}(TrackPublication));\n/**\n * The {@link RemoteTrack}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n * {@link Track.Priority}; RemoteTrackPublication#publishPriority is also\n * updated accordingly\n * @event RemoteTrackPublication#publishPriorityChanged\n */\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteTrack}.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was subscribed to\n * @event RemoteTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteTrack} could not be\n * subscribed to\n * @event RemoteTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteTrack} was disabled.\n * @event RemoteTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteTrack} was enabled.\n * @event RemoteTrackPublication#trackEnabled\n */\n/**\n * The {@link RemoteTrack} was switched off.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was switched off\n * @event RemoteTrackPublication#trackSwitchedOff\n */\n/**\n * The {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was switched on\n * @event RemoteTrackPublication#trackSwitchedOn\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteTrack}.\n * @param {RemoteTrack} track - the {@link RemoteTrack} that was unsubscribed from\n * @event RemoteTrackPublication#unsubscribed\n */\n/**\n * {@link RemoteTrackPublication} options\n * @typedef {object} RemoteTrackPublicationOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n */\nmodule.exports = RemoteTrackPublication;\n//# sourceMappingURL=remotetrackpublication.js.map","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar _a = require('../'), difference = _a.difference, flatMap = _a.flatMap;\nvar setSimulcastInMediaSection = require('./simulcast');\nvar ptToFixedBitrateAudioCodecName = {\n 0: 'PCMU',\n 8: 'PCMA'\n};\n/**\n * A payload type\n * @typedef {number} PT\n */\n/**\n * An {@link AudioCodec} or {@link VideoCodec}\n * @typedef {AudioCodec|VideoCodec} Codec\n */\n/**\n * Create a Codec Map for the given m= section.\n * @param {string} section - The given m= section\n * @returns {Map>}\n */\nfunction createCodecMapForMediaSection(section) {\n return Array.from(createPtToCodecName(section)).reduce(function (codecMap, pair) {\n var pt = pair[0];\n var codecName = pair[1];\n var pts = codecMap.get(codecName) || [];\n return codecMap.set(codecName, pts.concat(pt));\n }, new Map());\n}\n/**\n * Create a Map of MIDs to m= sections for the given SDP.\n * @param {string} sdp\n * @returns {Map}\n */\nfunction createMidToMediaSectionMap(sdp) {\n return getMediaSections(sdp).reduce(function (midsToMediaSections, mediaSection) {\n var mid = getMidForMediaSection(mediaSection);\n return mid ? midsToMediaSections.set(mid, mediaSection) : midsToMediaSections;\n }, new Map());\n}\n/**\n * Create a Map from PTs to codec names for the given m= section.\n * @param {string} mediaSection - The given m= section.\n * @returns {Map} ptToCodecName\n */\nfunction createPtToCodecName(mediaSection) {\n return getPayloadTypesInMediaSection(mediaSection).reduce(function (ptToCodecName, pt) {\n var rtpmapPattern = new RegExp(\"a=rtpmap:\" + pt + \" ([^/]+)\");\n var matches = mediaSection.match(rtpmapPattern);\n var codecName = matches\n ? matches[1].toLowerCase()\n : ptToFixedBitrateAudioCodecName[pt]\n ? ptToFixedBitrateAudioCodecName[pt].toLowerCase()\n : '';\n return ptToCodecName.set(pt, codecName);\n }, new Map());\n}\n/**\n * Get the associated fmtp attributes for the given Payload Type in an m= section.\n * @param {PT} pt\n * @param {string} mediaSection\n * @returns {?object}\n */\nfunction getFmtpAttributesForPt(pt, mediaSection) {\n // In \"a=fmtp: =[;=]*\", the regex matches the codec\n // profile parameters expressed as name/value pairs separated by \";\".\n var fmtpRegex = new RegExp(\"^a=fmtp:\" + pt + \" (.+)$\", 'm');\n var matches = mediaSection.match(fmtpRegex);\n return matches && matches[1].split(';').reduce(function (attrs, nvPair) {\n var _a = __read(nvPair.split('='), 2), name = _a[0], value = _a[1];\n attrs[name] = isNaN(value) ? value : parseInt(value, 10);\n return attrs;\n }, {});\n}\n/**\n * Get the MID for the given m= section.\n * @param {string} mediaSection\n * @return {?string}\n */\nfunction getMidForMediaSection(mediaSection) {\n // In \"a=mid:\", the regex matches .\n var midMatches = mediaSection.match(/^a=mid:(.+)$/m);\n return midMatches && midMatches[1];\n}\n/**\n * Get the m= sections of a particular kind and direction from an sdp.\n * @param {string} sdp - SDP string\n * @param {string} [kind] - Pattern for matching kind\n * @param {string} [direction] - Pattern for matching direction\n * @returns {Array} mediaSections\n */\nfunction getMediaSections(sdp, kind, direction) {\n return sdp.replace(/\\r\\n\\r\\n$/, '\\r\\n').split('\\r\\nm=').slice(1).map(function (mediaSection) { return \"m=\" + mediaSection; }).filter(function (mediaSection) {\n var kindPattern = new RegExp(\"m=\" + (kind || '.*'), 'gm');\n var directionPattern = new RegExp(\"a=\" + (direction || '.*'), 'gm');\n return kindPattern.test(mediaSection) && directionPattern.test(mediaSection);\n });\n}\n/**\n * Get the Codec Payload Types present in the first line of the given m= section\n * @param {string} section - The m= section\n * @returns {Array} Payload Types\n */\nfunction getPayloadTypesInMediaSection(section) {\n var mLine = section.split('\\r\\n')[0];\n // In \"m= ... \",\n // the regex matches and the Payload Types.\n var matches = mLine.match(/([0-9]+)/g);\n // This should not happen, but in case there are no Payload Types in\n // the m= line, return an empty array.\n if (!matches) {\n return [];\n }\n // Since only the Payload Types are needed, we discard the .\n return matches.slice(1).map(function (match) { return parseInt(match, 10); });\n}\n/**\n * Create the reordered Codec Payload Types based on the preferred Codec Names.\n * @param {Map>} codecMap - Codec Map\n * @param {Array} preferredCodecs - Preferred Codecs\n * @returns {Array} Reordered Payload Types\n */\nfunction getReorderedPayloadTypes(codecMap, preferredCodecs) {\n preferredCodecs = preferredCodecs.map(function (_a) {\n var codec = _a.codec;\n return codec.toLowerCase();\n });\n var preferredPayloadTypes = flatMap(preferredCodecs, function (codecName) { return codecMap.get(codecName) || []; });\n var remainingCodecs = difference(Array.from(codecMap.keys()), preferredCodecs);\n var remainingPayloadTypes = flatMap(remainingCodecs, function (codecName) { return codecMap.get(codecName); });\n return preferredPayloadTypes.concat(remainingPayloadTypes);\n}\n/**\n * Set the given Codec Payload Types in the first line of the given m= section.\n * @param {Array} payloadTypes - Payload Types\n * @param {string} section - Given m= section\n * @returns {string} - Updated m= section\n */\nfunction setPayloadTypesInMediaSection(payloadTypes, section) {\n var lines = section.split('\\r\\n');\n var mLine = lines[0];\n var otherLines = lines.slice(1);\n mLine = mLine.replace(/([0-9]+\\s?)+$/, payloadTypes.join(' '));\n return [mLine].concat(otherLines).join('\\r\\n');\n}\n/**\n * Return a new SDP string with the re-ordered codec preferences.\n * @param {string} sdp\n * @param {Array} preferredAudioCodecs - If empty, the existing order\n * of audio codecs is preserved\n * @param {Array} preferredVideoCodecs - If empty, the\n * existing order of video codecs is preserved\n * @returns {string} Updated SDP string\n */\nfunction setCodecPreferences(sdp, preferredAudioCodecs, preferredVideoCodecs) {\n var mediaSections = getMediaSections(sdp);\n var session = sdp.split('\\r\\nm=')[0];\n return [session].concat(mediaSections.map(function (section) {\n // Codec preferences should not be applied to m=application sections.\n if (!/^m=(audio|video)/.test(section)) {\n return section;\n }\n var kind = section.match(/^m=(audio|video)/)[1];\n var codecMap = createCodecMapForMediaSection(section);\n var preferredCodecs = kind === 'audio' ? preferredAudioCodecs : preferredVideoCodecs;\n var payloadTypes = getReorderedPayloadTypes(codecMap, preferredCodecs);\n var newSection = setPayloadTypesInMediaSection(payloadTypes, section);\n var pcmaPayloadTypes = codecMap.get('pcma') || [];\n var pcmuPayloadTypes = codecMap.get('pcmu') || [];\n var fixedBitratePayloadTypes = kind === 'audio'\n ? new Set(pcmaPayloadTypes.concat(pcmuPayloadTypes))\n : new Set();\n return fixedBitratePayloadTypes.has(payloadTypes[0])\n ? newSection.replace(/\\r\\nb=(AS|TIAS):([0-9]+)/g, '')\n : newSection;\n })).join('\\r\\n');\n}\n/**\n * Return a new SDP string with simulcast settings.\n * @param {string} sdp\n * @param {Map} trackIdsToAttributes\n * @returns {string} Updated SDP string\n */\nfunction setSimulcast(sdp, trackIdsToAttributes) {\n var mediaSections = getMediaSections(sdp);\n var session = sdp.split('\\r\\nm=')[0];\n return [session].concat(mediaSections.map(function (section) {\n section = section.replace(/\\r\\n$/, '');\n if (!/^m=video/.test(section)) {\n return section;\n }\n var codecMap = createCodecMapForMediaSection(section);\n var payloadTypes = getPayloadTypesInMediaSection(section);\n var vp8PayloadTypes = new Set(codecMap.get('vp8') || []);\n var hasVP8PayloadType = payloadTypes.some(function (payloadType) { return vp8PayloadTypes.has(payloadType); });\n return hasVP8PayloadType\n ? setSimulcastInMediaSection(section, trackIdsToAttributes)\n : section;\n })).concat('').join('\\r\\n');\n}\n/**\n * Get the matching Payload Types in an m= section for a particular peer codec.\n * @param {Codec} peerCodec\n * @param {PT} peerPt\n * @param {Map} codecsToPts\n * @param {string} section\n * @param {string} peerSection\n * @returns {Array}\n */\nfunction getMatchingPayloadTypes(peerCodec, peerPt, codecsToPts, section, peerSection) {\n // If there is at most one local Payload Type that matches the remote codec, retain it.\n var matchingPts = codecsToPts.get(peerCodec) || [];\n if (matchingPts.length <= 1) {\n return matchingPts;\n }\n // If there are no fmtp attributes for the codec in the peer m= section, then we\n // cannot get a match in the m= section. In that case, retain all matching Payload\n // Types.\n var peerFmtpAttrs = getFmtpAttributesForPt(peerPt, peerSection);\n if (!peerFmtpAttrs) {\n return matchingPts;\n }\n // Among the matched local Payload Types, find the one that matches the remote\n // fmtp attributes.\n var matchingPt = matchingPts.find(function (pt) {\n var fmtpAttrs = getFmtpAttributesForPt(pt, section);\n return fmtpAttrs && Object.keys(peerFmtpAttrs).every(function (attr) {\n return peerFmtpAttrs[attr] === fmtpAttrs[attr];\n });\n });\n // If none of the matched Payload Types also have matching fmtp attributes,\n // then retain all of them, otherwise retain only the Payload Type that\n // matches the peer fmtp attributes.\n return typeof matchingPt === 'number' ? [matchingPt] : matchingPts;\n}\n/**\n * Filter codecs in an m= section based on its peer m= section from the other peer.\n * @param {string} section\n * @param {Map} peerMidsToMediaSections\n * @param {Array} codecsToRemove\n * @returns {string}\n */\nfunction filterCodecsInMediaSection(section, peerMidsToMediaSections, codecsToRemove) {\n // Do nothing if the m= section represents neither audio nor video.\n if (!/^m=(audio|video)/.test(section)) {\n return section;\n }\n // Do nothing if the m= section does not have an equivalent remote m= section.\n var mid = getMidForMediaSection(section);\n var peerSection = mid && peerMidsToMediaSections.get(mid);\n if (!peerSection) {\n return section;\n }\n // Construct a Map of the peer Payload Types to their codec names.\n var peerPtToCodecs = createPtToCodecName(peerSection);\n // Construct a Map of the codec names to their Payload Types.\n var codecsToPts = createCodecMapForMediaSection(section);\n // Maintain a list of non-rtx Payload Types to retain.\n var pts = flatMap(Array.from(peerPtToCodecs), function (_a) {\n var _b = __read(_a, 2), peerPt = _b[0], peerCodec = _b[1];\n return peerCodec !== 'rtx' && !codecsToRemove.includes(peerCodec)\n ? getMatchingPayloadTypes(peerCodec, peerPt, codecsToPts, section, peerSection)\n : [];\n });\n // For each Payload Type that will be retained, retain their corresponding rtx\n // Payload Type if present.\n var rtxPts = codecsToPts.get('rtx') || [];\n // In \"a=fmtp: apt=\", extract the codec PT associated with rtxPt.\n pts = pts.concat(rtxPts.filter(function (rtxPt) {\n var fmtpAttrs = getFmtpAttributesForPt(rtxPt, section);\n return fmtpAttrs && pts.includes(fmtpAttrs.apt);\n }));\n // Filter out the below mentioned attribute lines in the m= section that do not\n // belong to one of the Payload Types that are to be retained.\n // 1. \"a=rtpmap: \"\n // 2. \"a=rtcp-fb: [ ]*\"\n // 3. \"a=fmtp: =[;=]*\"\n var lines = section.split('\\r\\n').filter(function (line) {\n var ptMatches = line.match(/^a=(rtpmap|fmtp|rtcp-fb):(.+) .+$/);\n var pt = ptMatches && ptMatches[2];\n return !ptMatches || (pt && pts.includes(parseInt(pt, 10)));\n });\n // Filter the list of Payload Types in the first line of the m= section.\n var orderedPts = getPayloadTypesInMediaSection(section).filter(function (pt) { return pts.includes(pt); });\n return setPayloadTypesInMediaSection(orderedPts, lines.join('\\r\\n'));\n}\n/**\n * Filter local codecs based on the remote SDP.\n * @param {string} localSdp\n * @param {string} remoteSdp\n * @returns {string} - Updated local SDP\n */\nfunction filterLocalCodecs(localSdp, remoteSdp) {\n var localMediaSections = getMediaSections(localSdp);\n var localSession = localSdp.split('\\r\\nm=')[0];\n var remoteMidsToMediaSections = createMidToMediaSectionMap(remoteSdp);\n return [localSession].concat(localMediaSections.map(function (localSection) {\n return filterCodecsInMediaSection(localSection, remoteMidsToMediaSections, []);\n })).join('\\r\\n');\n}\n/**\n * Return a new SDP string after reverting simulcast for non vp8 sections in remote sdp.\n * @param localSdp - simulcast enabled local sdp\n * @param localSdpWithoutSimulcast - local sdp before simulcast was set\n * @param remoteSdp - remote sdp\n * @param revertForAll - when true simulcast will be reverted for all codecs. when false it will be reverted\n * only for non-vp8 codecs.\n * @return {string} Updated SDP string\n */\nfunction revertSimulcast(localSdp, localSdpWithoutSimulcast, remoteSdp, revertForAll) {\n if (revertForAll === void 0) { revertForAll = false; }\n var remoteMidToMediaSections = createMidToMediaSectionMap(remoteSdp);\n var localMidToMediaSectionsWithoutSimulcast = createMidToMediaSectionMap(localSdpWithoutSimulcast);\n var mediaSections = getMediaSections(localSdp);\n var session = localSdp.split('\\r\\nm=')[0];\n return [session].concat(mediaSections.map(function (section) {\n section = section.replace(/\\r\\n$/, '');\n if (!/^m=video/.test(section)) {\n return section;\n }\n var midMatches = section.match(/^a=mid:(.+)$/m);\n var mid = midMatches && midMatches[1];\n if (!mid) {\n return section;\n }\n var remoteSection = remoteMidToMediaSections.get(mid);\n var remotePtToCodecs = createPtToCodecName(remoteSection);\n var remotePayloadTypes = getPayloadTypesInMediaSection(remoteSection);\n var isVP8ThePreferredCodec = remotePayloadTypes.length && remotePtToCodecs.get(remotePayloadTypes[0]) === 'vp8';\n var shouldRevertSimulcast = revertForAll || !isVP8ThePreferredCodec;\n return shouldRevertSimulcast ? localMidToMediaSectionsWithoutSimulcast.get(mid).replace(/\\r\\n$/, '') : section;\n })).concat('').join('\\r\\n');\n}\n/**\n * Add or rewrite MSIDs for new m= sections in the given SDP with their corresponding\n * local MediaStreamTrack IDs. These can be different when previously removed MediaStreamTracks\n * are added back (or Track IDs may not be present in the SDPs at all once browsers implement\n * the latest WebRTC spec).\n * @param {string} sdp\n * @param {Map} activeMidsToTrackIds\n * @param {Map>} trackIdsByKind\n * @returns {string}\n */\nfunction addOrRewriteNewTrackIds(sdp, activeMidsToTrackIds, trackIdsByKind) {\n // NOTE(mmalavalli): The m= sections for the new MediaStreamTracks are usually\n // present after the m= sections for the existing MediaStreamTracks, in order\n // of addition.\n var newMidsToTrackIds = Array.from(trackIdsByKind).reduce(function (midsToTrackIds, _a) {\n var _b = __read(_a, 2), kind = _b[0], trackIds = _b[1];\n var mediaSections = getMediaSections(sdp, kind, 'send(only|recv)');\n var newMids = mediaSections.map(getMidForMediaSection).filter(function (mid) { return !activeMidsToTrackIds.has(mid); });\n newMids.forEach(function (mid, i) { return midsToTrackIds.set(mid, trackIds[i]); });\n return midsToTrackIds;\n }, new Map());\n return addOrRewriteTrackIds(sdp, newMidsToTrackIds);\n}\n/**\n * Add or rewrite MSIDs in the given SDP with their corresponding local MediaStreamTrack IDs.\n * These IDs need not be the same (or Track IDs may not be present in the SDPs at all once\n * browsers implement the latest WebRTC spec).\n * @param {string} sdp\n * @param {Map} midsToTrackIds\n * @returns {string}\n */\nfunction addOrRewriteTrackIds(sdp, midsToTrackIds) {\n var mediaSections = getMediaSections(sdp);\n var session = sdp.split('\\r\\nm=')[0];\n return [session].concat(mediaSections.map(function (mediaSection) {\n // Do nothing if the m= section represents neither audio nor video.\n if (!/^m=(audio|video)/.test(mediaSection)) {\n return mediaSection;\n }\n // This shouldn't happen, but in case there is no MID for the m= section, do nothing.\n var mid = getMidForMediaSection(mediaSection);\n if (!mid) {\n return mediaSection;\n }\n // In case there is no Track ID for the given MID in the map, do nothing.\n var trackId = midsToTrackIds.get(mid);\n if (!trackId) {\n return mediaSection;\n }\n // This shouldn't happen, but in case there is no a=msid: line, do nothing.\n var attributes = (mediaSection.match(/^a=msid:(.+)$/m) || [])[1];\n if (!attributes) {\n return mediaSection;\n }\n // If the a=msid: line contains the \"appdata\" field, then replace it with the Track ID,\n // otherwise append the Track ID.\n var _a = __read(attributes.split(' '), 2), msid = _a[0], trackIdToRewrite = _a[1];\n var msidRegex = new RegExp(\"msid:\" + msid + (trackIdToRewrite ? \" \" + trackIdToRewrite : '') + \"$\", 'gm');\n return mediaSection.replace(msidRegex, \"msid:\" + msid + \" \" + trackId);\n })).join('\\r\\n');\n}\n/**\n * Removes specified ssrc attributes from given sdp.\n * @param {string} sdp\n * @param {Array} ssrcAttributesToRemove\n * @returns {string}\n */\nfunction removeSSRCAttributes(sdp, ssrcAttributesToRemove) {\n return sdp.split('\\r\\n').filter(function (line) {\n return !ssrcAttributesToRemove.find(function (srcAttribute) { return new RegExp('a=ssrc:.*' + srcAttribute + ':', 'g').test(line); });\n }).join('\\r\\n');\n}\n/**\n * Disable RTX in a given sdp.\n * @param {string} sdp\n * @returns {string} sdp without RTX\n */\nfunction disableRtx(sdp) {\n var mediaSections = getMediaSections(sdp);\n var session = sdp.split('\\r\\nm=')[0];\n return [session].concat(mediaSections.map(function (mediaSection) {\n // Do nothing if the m= section does not represent a video track.\n if (!/^m=video/.test(mediaSection)) {\n return mediaSection;\n }\n // Create a map of codecs to payload types.\n var codecsToPts = createCodecMapForMediaSection(mediaSection);\n // Get the RTX payload types.\n var rtxPts = codecsToPts.get('rtx');\n // Do nothing if there are no RTX payload types.\n if (!rtxPts) {\n return mediaSection;\n }\n // Remove the RTX payload types.\n var pts = new Set(getPayloadTypesInMediaSection(mediaSection));\n rtxPts.forEach(function (rtxPt) { return pts.delete(rtxPt); });\n // Get the RTX SSRC.\n var rtxSSRCMatches = mediaSection.match(/a=ssrc-group:FID [0-9]+ ([0-9]+)/);\n var rtxSSRC = rtxSSRCMatches && rtxSSRCMatches[1];\n // Remove the following lines associated with the RTX payload types:\n // 1. \"a=fmtp: apt=\"\n // 2. \"a=rtpmap: rtx/...\"\n // 3. \"a=ssrc: cname:...\"\n // 4. \"a=ssrc-group:FID \"\n var filterRegexes = [\n /^a=fmtp:.+ apt=.+$/,\n /^a=rtpmap:.+ rtx\\/.+$/,\n /^a=ssrc-group:.+$/\n ].concat(rtxSSRC\n ? [new RegExp(\"^a=ssrc:\" + rtxSSRC + \" .+$\")]\n : []);\n mediaSection = mediaSection.split('\\r\\n')\n .filter(function (line) { return filterRegexes.every(function (regex) { return !regex.test(line); }); })\n .join('\\r\\n');\n // Reconstruct the m= section without the RTX payload types.\n return setPayloadTypesInMediaSection(Array.from(pts), mediaSection);\n })).join('\\r\\n');\n}\n/**\n * Generate an a=fmtp: line from the given payload type and attributes.\n * @param {PT} pt\n * @param {*} fmtpAttrs\n * @returns {string}\n */\nfunction generateFmtpLineFromPtAndAttributes(pt, fmtpAttrs) {\n var serializedFmtpAttrs = Object.entries(fmtpAttrs).map(function (_a) {\n var _b = __read(_a, 2), name = _b[0], value = _b[1];\n return name + \"=\" + value;\n }).join(';');\n return \"a=fmtp:\" + pt + \" \" + serializedFmtpAttrs;\n}\n/**\n * Enable DTX for opus in the m= sections for the given MIDs.`\n * @param {string} sdp\n * @param {Array} [mids] - If not specified, enables opus DTX for all\n * audio m= lines.\n * @returns {string}\n */\nfunction enableDtxForOpus(sdp, mids) {\n var mediaSections = getMediaSections(sdp);\n var session = sdp.split('\\r\\nm=')[0];\n mids = mids || mediaSections\n .filter(function (section) { return /^m=audio/.test(section); })\n .map(getMidForMediaSection);\n return [session].concat(mediaSections.map(function (section) {\n // Do nothing if the m= section is not audio.\n if (!/^m=audio/.test(section)) {\n return section;\n }\n // Build a map codecs to payload types.\n var codecsToPts = createCodecMapForMediaSection(section);\n // Do nothing if a payload type for opus does not exist.\n var opusPt = codecsToPts.get('opus');\n if (!opusPt) {\n return section;\n }\n // If no fmtp attributes are found for opus, do nothing.\n var opusFmtpAttrs = getFmtpAttributesForPt(opusPt, section);\n if (!opusFmtpAttrs) {\n return section;\n }\n // Add usedtx=1 to the a=fmtp: line for opus.\n var origOpusFmtpLine = generateFmtpLineFromPtAndAttributes(opusPt, opusFmtpAttrs);\n var origOpusFmtpRegex = new RegExp(origOpusFmtpLine);\n // If the m= section's MID is in the list of MIDs, then enable dtx. Otherwise disable it.\n var mid = getMidForMediaSection(section);\n if (mids.includes(mid)) {\n opusFmtpAttrs.usedtx = 1;\n }\n else {\n delete opusFmtpAttrs.usedtx;\n }\n var opusFmtpLineWithDtx = generateFmtpLineFromPtAndAttributes(opusPt, opusFmtpAttrs);\n return section.replace(origOpusFmtpRegex, opusFmtpLineWithDtx);\n })).join('\\r\\n');\n}\nexports.addOrRewriteNewTrackIds = addOrRewriteNewTrackIds;\nexports.addOrRewriteTrackIds = addOrRewriteTrackIds;\nexports.createCodecMapForMediaSection = createCodecMapForMediaSection;\nexports.createPtToCodecName = createPtToCodecName;\nexports.disableRtx = disableRtx;\nexports.enableDtxForOpus = enableDtxForOpus;\nexports.filterLocalCodecs = filterLocalCodecs;\nexports.getMediaSections = getMediaSections;\nexports.removeSSRCAttributes = removeSSRCAttributes;\nexports.revertSimulcast = revertSimulcast;\nexports.setCodecPreferences = setCodecPreferences;\nexports.setSimulcast = setSimulcast;\n//# sourceMappingURL=index.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar StateMachine = require('../statemachine');\nvar NetworkQualityStats = require('../stats/networkqualitystats');\n/*\nParticipantSignaling States\n----------------------\n\n +------------+ +-----------+ +--------------+\n | | | | | |\n | connecting |---->| connected |---->| disconnected |\n | | | | | |\n +------------+ +-----------+ +--------------+\n | ^ ^\n | | +--------------+ |\n | |--| | |\n |--->| reconnecting |--|\n | |\n +--------------+\n*/\nvar states = {\n connecting: [\n 'connected'\n ],\n connected: [\n 'disconnected',\n 'reconnecting'\n ],\n reconnecting: [\n 'connected',\n 'disconnected'\n ],\n disconnected: []\n};\n/**\n * A {@link Participant} implementation\n * @extends StateMachine\n * @property {?string} identity\n * @property {?Participant.SID} sid\n * @property {string} state - \"connecting\", \"connected\", or \"disconnected\"\n * @property {Map} tracks\n * @emits ParticipantSignaling#networkQualityLevelChanged\n * @emits ParticipantSignaling#trackAdded\n * @emits ParticipantSignaling#trackRemoved\n */\nvar ParticipantSignaling = /** @class */ (function (_super) {\n __extends(ParticipantSignaling, _super);\n /**\n * Construct a {@link ParticipantSignaling}.\n */\n function ParticipantSignaling() {\n var _this = _super.call(this, 'connecting', states) || this;\n Object.defineProperties(_this, {\n _identity: {\n writable: true,\n value: null\n },\n _networkQualityLevel: {\n value: null,\n writable: true\n },\n _networkQualityStats: {\n value: null,\n writable: true\n },\n _sid: {\n writable: true,\n value: null\n },\n identity: {\n enumerable: true,\n get: function () {\n return this._identity;\n }\n },\n sid: {\n enumerable: true,\n get: function () {\n return this._sid;\n }\n },\n tracks: {\n enumerable: true,\n value: new Map()\n }\n });\n return _this;\n }\n Object.defineProperty(ParticipantSignaling.prototype, \"networkQualityLevel\", {\n /**\n * Get the current {@link NetworkQualityLevel}, if any.\n * @returns {?NetworkQualityLevel} networkQualityLevel - initially null\n */\n get: function () {\n return this._networkQualityLevel;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ParticipantSignaling.prototype, \"networkQualityStats\", {\n /**\n * Get the current {@link NetworkQualityStats}\n * @returns {?NetworkQualityStats} networkQualityStats - initially null\n */\n get: function () {\n return this._networkQualityStats;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Add the {@link TrackSignaling}, MediaStreamTrack, or\n * {@link DataTrackSender} to the {@link ParticipantSignaling}.\n * @param {TrackSignaling|DataTrackSender|MediaTrackSender} track\n * @returns {this}\n * @fires ParticipantSignaling#trackAdded\n */\n ParticipantSignaling.prototype.addTrack = function (track) {\n this.tracks.set(track.id || track.sid, track);\n this.emit('trackAdded', track);\n return this;\n };\n /**\n * Disconnect the {@link ParticipantSignaling}.\n * @returns {boolean}\n */\n ParticipantSignaling.prototype.disconnect = function () {\n if (this.state !== 'disconnected') {\n this.preempt('disconnected');\n return true;\n }\n return false;\n };\n /**\n * Remove the {@link TrackSignaling}, MediaStreamTrack, or\n * {@link DataTrackSender} from the {@link ParticipantSignaling}.\n * @param {TrackSignaling|DataTrackSender|MediaTrackSender} track\n * @returns {?TrackSignaling}\n * @fires ParticipantSignaling#trackRemoved\n */\n ParticipantSignaling.prototype.removeTrack = function (track) {\n var signaling = this.tracks.get(track.id || track.sid);\n this.tracks.delete(track.id || track.sid);\n if (signaling) {\n this.emit('trackRemoved', track);\n }\n return signaling || null;\n };\n /**\n * @param {NetworkQualityLevel} networkQualityLevel\n * @param {?NetworkQualityLevels} [networkQualityLevels=null]\n * @returns {void}\n */\n ParticipantSignaling.prototype.setNetworkQualityLevel = function (networkQualityLevel, networkQualityLevels) {\n if (this._networkQualityLevel !== networkQualityLevel) {\n this._networkQualityLevel = networkQualityLevel;\n this._networkQualityStats = networkQualityLevels\n && (networkQualityLevels.audio || networkQualityLevels.video)\n ? new NetworkQualityStats(networkQualityLevels)\n : null;\n this.emit('networkQualityLevelChanged');\n }\n };\n /**\n * Connect the {@link ParticipantSignaling}.\n * @param {Participant.SID} sid\n * @param {string} identity\n * @returns {boolean}\n */\n ParticipantSignaling.prototype.connect = function (sid, identity) {\n if (this.state === 'connecting' || this.state === 'reconnecting') {\n if (!this._sid) {\n this._sid = sid;\n }\n if (!this._identity) {\n this._identity = identity;\n }\n this.preempt('connected');\n return true;\n }\n return false;\n };\n /**\n * Transition to \"reconnecting\" state.\n * @returns {boolean}\n */\n ParticipantSignaling.prototype.reconnecting = function () {\n if (this.state === 'connecting' || this.state === 'connected') {\n this.preempt('reconnecting');\n return true;\n }\n return false;\n };\n return ParticipantSignaling;\n}(StateMachine));\n/**\n * @event ParticipantSignaling#event:networkQualityLevelChanged\n */\n/**\n * {@link TrackSignaling} was added to the {@link ParticipantSignaling}.\n * @event ParticipantSignaling#trackAdded\n * @param {TrackSignaling} track\n */\n/**\n * {@link TrackSignaling} was removed from the {@link ParticipantSignaling}.\n * @event ParticipantSignaling#trackRemoved\n * @param {TrackSignaling} track\n */\nmodule.exports = ParticipantSignaling;\n//# sourceMappingURL=participant.js.map","import React from 'react';\nexport default React.createContext(null);","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","// ES6 Map\nvar map\ntry {\n map = Map\n} catch (_) { }\nvar set\n\n// ES6 Set\ntry {\n set = Set\n} catch (_) { }\n\nfunction baseClone (src, circulars, clones) {\n // Null/undefined/functions/etc\n if (!src || typeof src !== 'object' || typeof src === 'function') {\n return src\n }\n\n // DOM Node\n if (src.nodeType && 'cloneNode' in src) {\n return src.cloneNode(true)\n }\n\n // Date\n if (src instanceof Date) {\n return new Date(src.getTime())\n }\n\n // RegExp\n if (src instanceof RegExp) {\n return new RegExp(src)\n }\n\n // Arrays\n if (Array.isArray(src)) {\n return src.map(clone)\n }\n\n // ES6 Maps\n if (map && src instanceof map) {\n return new Map(Array.from(src.entries()))\n }\n\n // ES6 Sets\n if (set && src instanceof set) {\n return new Set(Array.from(src.values()))\n }\n\n // Object\n if (src instanceof Object) {\n circulars.push(src)\n var obj = Object.create(src)\n clones.push(obj)\n for (var key in src) {\n var idx = circulars.findIndex(function (i) {\n return i === src[key]\n })\n obj[key] = idx > -1 ? clones[idx] : baseClone(src[key], circulars, clones)\n }\n return obj\n }\n\n // ???\n return src\n}\n\nexport default function clone (src) {\n return baseClone(src, [], [])\n}\n","const toString = Object.prototype.toString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val) {\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : '' + val;\n}\n\nfunction printSimpleValue(val, quoteStrings = false) {\n if (val == null || val === true || val === false) return '' + val;\n const typeOf = typeof val;\n if (typeOf === 'number') return printNumber(val);\n if (typeOf === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeOf === 'function') return '[Function ' + (val.name || 'anonymous') + ']';\n if (typeOf === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n const tag = toString.call(val).slice(8, -1);\n if (tag === 'Date') return isNaN(val.getTime()) ? '' + val : val.toISOString(val);\n if (tag === 'Error' || val instanceof Error) return '[' + errorToString.call(val) + ']';\n if (tag === 'RegExp') return regExpToString.call(val);\n return null;\n}\n\nexport default function printValue(value, quoteStrings) {\n let result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n return JSON.stringify(value, function (key, value) {\n let result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n }, 2);\n}","import printValue from './util/printValue';\nexport let mixed = {\n default: '${path} is invalid',\n required: '${path} is a required field',\n oneOf: '${path} must be one of the following values: ${values}',\n notOneOf: '${path} must not be one of the following values: ${values}',\n notType: ({\n path,\n type,\n value,\n originalValue\n }) => {\n let isCast = originalValue != null && originalValue !== value;\n let msg = `${path} must be a \\`${type}\\` type, ` + `but the final value was: \\`${printValue(value, true)}\\`` + (isCast ? ` (cast from the value \\`${printValue(originalValue, true)}\\`).` : '.');\n\n if (value === null) {\n msg += `\\n If \"null\" is intended as an empty value be sure to mark the schema as \\`.nullable()\\``;\n }\n\n return msg;\n },\n defined: '${path} must be defined'\n};\nexport let string = {\n length: '${path} must be exactly ${length} characters',\n min: '${path} must be at least ${min} characters',\n max: '${path} must be at most ${max} characters',\n matches: '${path} must match the following: \"${regex}\"',\n email: '${path} must be a valid email',\n url: '${path} must be a valid URL',\n uuid: '${path} must be a valid UUID',\n trim: '${path} must be a trimmed string',\n lowercase: '${path} must be a lowercase string',\n uppercase: '${path} must be a upper case string'\n};\nexport let number = {\n min: '${path} must be greater than or equal to ${min}',\n max: '${path} must be less than or equal to ${max}',\n lessThan: '${path} must be less than ${less}',\n moreThan: '${path} must be greater than ${more}',\n positive: '${path} must be a positive number',\n negative: '${path} must be a negative number',\n integer: '${path} must be an integer'\n};\nexport let date = {\n min: '${path} field must be later than ${min}',\n max: '${path} field must be at earlier than ${max}'\n};\nexport let boolean = {\n isValue: '${path} field must be ${value}'\n};\nexport let object = {\n noUnknown: '${path} field has unspecified keys: ${unknown}'\n};\nexport let array = {\n min: '${path} field must have at least ${min} items',\n max: '${path} field must have less than or equal to ${max} items',\n length: '${path} must have ${length} items'\n};\nexport default Object.assign(Object.create(null), {\n mixed,\n string,\n number,\n date,\n object,\n array,\n boolean\n});","const isSchema = obj => obj && obj.__isYupSchema__;\n\nexport default isSchema;","import has from 'lodash/has';\nimport isSchema from './util/isSchema';\n\nclass Condition {\n constructor(refs, options) {\n this.fn = void 0;\n this.refs = refs;\n this.refs = refs;\n\n if (typeof options === 'function') {\n this.fn = options;\n return;\n }\n\n if (!has(options, 'is')) throw new TypeError('`is:` is required for `when()` conditions');\n if (!options.then && !options.otherwise) throw new TypeError('either `then:` or `otherwise:` is required for `when()` conditions');\n let {\n is,\n then,\n otherwise\n } = options;\n let check = typeof is === 'function' ? is : (...values) => values.every(value => value === is);\n\n this.fn = function (...args) {\n let options = args.pop();\n let schema = args.pop();\n let branch = check(...args) ? then : otherwise;\n if (!branch) return undefined;\n if (typeof branch === 'function') return branch(schema);\n return schema.concat(branch.resolve(options));\n };\n }\n\n resolve(base, options) {\n let values = this.refs.map(ref => ref.getValue(options == null ? void 0 : options.value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context));\n let schema = this.fn.apply(base, values.concat(base, options));\n if (schema === undefined || schema === base) return base;\n if (!isSchema(schema)) throw new TypeError('conditions must return a schema object');\n return schema.resolve(options);\n }\n\n}\n\nexport default Condition;","export default function toArray(value) {\n return value == null ? [] : [].concat(value);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport printValue from './util/printValue';\nimport toArray from './util/toArray';\nlet strReg = /\\$\\{\\s*(\\w+)\\s*\\}/g;\nexport default class ValidationError extends Error {\n static formatError(message, params) {\n const path = params.label || params.path || 'this';\n if (path !== params.path) params = _extends({}, params, {\n path\n });\n if (typeof message === 'string') return message.replace(strReg, (_, key) => printValue(params[key]));\n if (typeof message === 'function') return message(params);\n return message;\n }\n\n static isError(err) {\n return err && err.name === 'ValidationError';\n }\n\n constructor(errorOrErrors, value, field, type) {\n super();\n this.value = void 0;\n this.path = void 0;\n this.type = void 0;\n this.errors = void 0;\n this.params = void 0;\n this.inner = void 0;\n this.name = 'ValidationError';\n this.value = value;\n this.path = field;\n this.type = type;\n this.errors = [];\n this.inner = [];\n toArray(errorOrErrors).forEach(err => {\n if (ValidationError.isError(err)) {\n this.errors.push(...err.errors);\n this.inner = this.inner.concat(err.inner.length ? err.inner : err);\n } else {\n this.errors.push(err);\n }\n });\n this.message = this.errors.length > 1 ? `${this.errors.length} errors occurred` : this.errors[0];\n if (Error.captureStackTrace) Error.captureStackTrace(this, ValidationError);\n }\n\n}","import ValidationError from '../ValidationError';\n\nconst once = cb => {\n let fired = false;\n return (...args) => {\n if (fired) return;\n fired = true;\n cb(...args);\n };\n};\n\nexport default function runTests(options, cb) {\n let {\n endEarly,\n tests,\n args,\n value,\n errors,\n sort,\n path\n } = options;\n let callback = once(cb);\n let count = tests.length;\n const nestedErrors = [];\n errors = errors ? errors : [];\n if (!count) return errors.length ? callback(new ValidationError(errors, value, path)) : callback(null, value);\n\n for (let i = 0; i < tests.length; i++) {\n const test = tests[i];\n test(args, function finishTestRun(err) {\n if (err) {\n // always return early for non validation errors\n if (!ValidationError.isError(err)) {\n return callback(err, value);\n }\n\n if (endEarly) {\n err.value = value;\n return callback(err, value);\n }\n\n nestedErrors.push(err);\n }\n\n if (--count <= 0) {\n if (nestedErrors.length) {\n if (sort) nestedErrors.sort(sort); //show parent errors after the nested ones: name.first, name\n\n if (errors.length) nestedErrors.push(...errors);\n errors = nestedErrors;\n }\n\n if (errors.length) {\n callback(new ValidationError(errors, value, path), value);\n return;\n }\n\n callback(null, value);\n }\n });\n }\n}","import { getter } from 'property-expr';\nconst prefixes = {\n context: '$',\n value: '.'\n};\nexport function create(key, options) {\n return new Reference(key, options);\n}\nexport default class Reference {\n constructor(key, options = {}) {\n this.key = void 0;\n this.isContext = void 0;\n this.isValue = void 0;\n this.isSibling = void 0;\n this.path = void 0;\n this.getter = void 0;\n this.map = void 0;\n if (typeof key !== 'string') throw new TypeError('ref must be a string, got: ' + key);\n this.key = key.trim();\n if (key === '') throw new TypeError('ref must be a non-empty string');\n this.isContext = this.key[0] === prefixes.context;\n this.isValue = this.key[0] === prefixes.value;\n this.isSibling = !this.isContext && !this.isValue;\n let prefix = this.isContext ? prefixes.context : this.isValue ? prefixes.value : '';\n this.path = this.key.slice(prefix.length);\n this.getter = this.path && getter(this.path, true);\n this.map = options.map;\n }\n\n getValue(value, parent, context) {\n let result = this.isContext ? context : this.isValue ? value : parent;\n if (this.getter) result = this.getter(result || {});\n if (this.map) result = this.map(result);\n return result;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {Object=} options.context\n * @param {Object=} options.parent\n */\n\n\n cast(value, options) {\n return this.getValue(value, options == null ? void 0 : options.parent, options == null ? void 0 : options.context);\n }\n\n resolve() {\n return this;\n }\n\n describe() {\n return {\n type: 'ref',\n key: this.key\n };\n }\n\n toString() {\n return `Ref(${this.key})`;\n }\n\n static isRef(value) {\n return value && value.__isYupRef;\n }\n\n} // @ts-ignore\n\nReference.prototype.__isYupRef = true;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport mapValues from 'lodash/mapValues';\nimport ValidationError from '../ValidationError';\nimport Ref from '../Reference';\nexport default function createValidation(config) {\n function validate(_ref, cb) {\n let {\n value,\n path = '',\n label,\n options,\n originalValue,\n sync\n } = _ref,\n rest = _objectWithoutPropertiesLoose(_ref, [\"value\", \"path\", \"label\", \"options\", \"originalValue\", \"sync\"]);\n\n const {\n name,\n test,\n params,\n message\n } = config;\n let {\n parent,\n context\n } = options;\n\n function resolve(item) {\n return Ref.isRef(item) ? item.getValue(value, parent, context) : item;\n }\n\n function createError(overrides = {}) {\n const nextParams = mapValues(_extends({\n value,\n originalValue,\n label,\n path: overrides.path || path\n }, params, overrides.params), resolve);\n const error = new ValidationError(ValidationError.formatError(overrides.message || message, nextParams), value, nextParams.path, overrides.type || name);\n error.params = nextParams;\n return error;\n }\n\n let ctx = _extends({\n path,\n parent,\n type: name,\n createError,\n resolve,\n options,\n originalValue\n }, rest);\n\n if (!sync) {\n try {\n Promise.resolve(test.call(ctx, value, ctx)).then(validOrError => {\n if (ValidationError.isError(validOrError)) cb(validOrError);else if (!validOrError) cb(createError());else cb(null, validOrError);\n }).catch(cb);\n } catch (err) {\n cb(err);\n }\n\n return;\n }\n\n let result;\n\n try {\n var _ref2;\n\n result = test.call(ctx, value, ctx);\n\n if (typeof ((_ref2 = result) == null ? void 0 : _ref2.then) === 'function') {\n throw new Error(`Validation test of type: \"${ctx.type}\" returned a Promise during a synchronous validate. ` + `This test will finish after the validate call has returned`);\n }\n } catch (err) {\n cb(err);\n return;\n }\n\n if (ValidationError.isError(result)) cb(result);else if (!result) cb(createError());else cb(null, result);\n }\n\n validate.OPTIONS = config;\n return validate;\n}","import { forEach } from 'property-expr';\n\nlet trim = part => part.substr(0, part.length - 1).substr(1);\n\nexport function getIn(schema, path, value, context = value) {\n let parent, lastPart, lastPartDebug; // root path: ''\n\n if (!path) return {\n parent,\n parentPath: path,\n schema\n };\n forEach(path, (_part, isBracket, isArray) => {\n let part = isBracket ? trim(_part) : _part;\n schema = schema.resolve({\n context,\n parent,\n value\n });\n\n if (schema.innerType) {\n let idx = isArray ? parseInt(part, 10) : 0;\n\n if (value && idx >= value.length) {\n throw new Error(`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` + `because there is no value at that index. `);\n }\n\n parent = value;\n value = value && value[idx];\n schema = schema.innerType;\n } // sometimes the array index part of a path doesn't exist: \"nested.arr.child\"\n // in these cases the current part is the next schema and should be processed\n // in this iteration. For cases where the index signature is included this\n // check will fail and we'll handle the `child` part on the next iteration like normal\n\n\n if (!isArray) {\n if (!schema.fields || !schema.fields[part]) throw new Error(`The schema does not contain the path: ${path}. ` + `(failed at: ${lastPartDebug} which is a type: \"${schema._type}\")`);\n parent = value;\n value = value && value[part];\n schema = schema.fields[part];\n }\n\n lastPart = part;\n lastPartDebug = isBracket ? '[' + _part + ']' : '.' + _part;\n });\n return {\n schema,\n parent,\n parentPath: lastPart\n };\n}\n\nconst reach = (obj, path, value, context) => getIn(obj, path, value, context).schema;\n\nexport default reach;","import Reference from '../Reference';\nexport default class ReferenceSet {\n constructor() {\n this.list = void 0;\n this.refs = void 0;\n this.list = new Set();\n this.refs = new Map();\n }\n\n get size() {\n return this.list.size + this.refs.size;\n }\n\n describe() {\n const description = [];\n\n for (const item of this.list) description.push(item);\n\n for (const [, ref] of this.refs) description.push(ref.describe());\n\n return description;\n }\n\n toArray() {\n return Array.from(this.list).concat(Array.from(this.refs.values()));\n }\n\n resolveAll(resolve) {\n return this.toArray().reduce((acc, e) => acc.concat(Reference.isRef(e) ? resolve(e) : e), []);\n }\n\n add(value) {\n Reference.isRef(value) ? this.refs.set(value.key, value) : this.list.add(value);\n }\n\n delete(value) {\n Reference.isRef(value) ? this.refs.delete(value.key) : this.list.delete(value);\n }\n\n clone() {\n const next = new ReferenceSet();\n next.list = new Set(this.list);\n next.refs = new Map(this.refs);\n return next;\n }\n\n merge(newItems, removeItems) {\n const next = this.clone();\n newItems.list.forEach(value => next.add(value));\n newItems.refs.forEach(value => next.add(value));\n removeItems.list.forEach(value => next.delete(value));\n removeItems.refs.forEach(value => next.delete(value));\n return next;\n }\n\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n// @ts-ignore\nimport cloneDeep from 'nanoclone';\nimport { mixed as locale } from './locale';\nimport Condition from './Condition';\nimport runTests from './util/runTests';\nimport createValidation from './util/createValidation';\nimport printValue from './util/printValue';\nimport Ref from './Reference';\nimport { getIn } from './util/reach';\nimport ValidationError from './ValidationError';\nimport ReferenceSet from './util/ReferenceSet';\nimport toArray from './util/toArray'; // const UNSET = 'unset' as const;\n\nexport default class BaseSchema {\n constructor(options) {\n this.deps = [];\n this.tests = void 0;\n this.transforms = void 0;\n this.conditions = [];\n this._mutate = void 0;\n this._typeError = void 0;\n this._whitelist = new ReferenceSet();\n this._blacklist = new ReferenceSet();\n this.exclusiveTests = Object.create(null);\n this.spec = void 0;\n this.tests = [];\n this.transforms = [];\n this.withMutation(() => {\n this.typeError(locale.notType);\n });\n this.type = (options == null ? void 0 : options.type) || 'mixed';\n this.spec = _extends({\n strip: false,\n strict: false,\n abortEarly: true,\n recursive: true,\n nullable: false,\n presence: 'optional'\n }, options == null ? void 0 : options.spec);\n } // TODO: remove\n\n\n get _type() {\n return this.type;\n }\n\n _typeCheck(_value) {\n return true;\n }\n\n clone(spec) {\n if (this._mutate) {\n if (spec) Object.assign(this.spec, spec);\n return this;\n } // if the nested value is a schema we can skip cloning, since\n // they are already immutable\n\n\n const next = Object.create(Object.getPrototypeOf(this)); // @ts-expect-error this is readonly\n\n next.type = this.type;\n next._typeError = this._typeError;\n next._whitelistError = this._whitelistError;\n next._blacklistError = this._blacklistError;\n next._whitelist = this._whitelist.clone();\n next._blacklist = this._blacklist.clone();\n next.exclusiveTests = _extends({}, this.exclusiveTests); // @ts-expect-error this is readonly\n\n next.deps = [...this.deps];\n next.conditions = [...this.conditions];\n next.tests = [...this.tests];\n next.transforms = [...this.transforms];\n next.spec = cloneDeep(_extends({}, this.spec, spec));\n return next;\n }\n\n label(label) {\n let next = this.clone();\n next.spec.label = label;\n return next;\n }\n\n meta(...args) {\n if (args.length === 0) return this.spec.meta;\n let next = this.clone();\n next.spec.meta = Object.assign(next.spec.meta || {}, args[0]);\n return next;\n } // withContext(): BaseSchema<\n // TCast,\n // TContext,\n // TOutput\n // > {\n // return this as any;\n // }\n\n\n withMutation(fn) {\n let before = this._mutate;\n this._mutate = true;\n let result = fn(this);\n this._mutate = before;\n return result;\n }\n\n concat(schema) {\n if (!schema || schema === this) return this;\n if (schema.type !== this.type && this.type !== 'mixed') throw new TypeError(`You cannot \\`concat()\\` schema's of different types: ${this.type} and ${schema.type}`);\n let base = this;\n let combined = schema.clone();\n\n const mergedSpec = _extends({}, base.spec, combined.spec); // if (combined.spec.nullable === UNSET)\n // mergedSpec.nullable = base.spec.nullable;\n // if (combined.spec.presence === UNSET)\n // mergedSpec.presence = base.spec.presence;\n\n\n combined.spec = mergedSpec;\n combined._typeError || (combined._typeError = base._typeError);\n combined._whitelistError || (combined._whitelistError = base._whitelistError);\n combined._blacklistError || (combined._blacklistError = base._blacklistError); // manually merge the blacklist/whitelist (the other `schema` takes\n // precedence in case of conflicts)\n\n combined._whitelist = base._whitelist.merge(schema._whitelist, schema._blacklist);\n combined._blacklist = base._blacklist.merge(schema._blacklist, schema._whitelist); // start with the current tests\n\n combined.tests = base.tests;\n combined.exclusiveTests = base.exclusiveTests; // manually add the new tests to ensure\n // the deduping logic is consistent\n\n combined.withMutation(next => {\n schema.tests.forEach(fn => {\n next.test(fn.OPTIONS);\n });\n });\n combined.transforms = [...base.transforms, ...combined.transforms];\n return combined;\n }\n\n isType(v) {\n if (this.spec.nullable && v === null) return true;\n return this._typeCheck(v);\n }\n\n resolve(options) {\n let schema = this;\n\n if (schema.conditions.length) {\n let conditions = schema.conditions;\n schema = schema.clone();\n schema.conditions = [];\n schema = conditions.reduce((schema, condition) => condition.resolve(schema, options), schema);\n schema = schema.resolve(options);\n }\n\n return schema;\n }\n /**\n *\n * @param {*} value\n * @param {Object} options\n * @param {*=} options.parent\n * @param {*=} options.context\n */\n\n\n cast(value, options = {}) {\n let resolvedSchema = this.resolve(_extends({\n value\n }, options));\n\n let result = resolvedSchema._cast(value, options);\n\n if (value !== undefined && options.assert !== false && resolvedSchema.isType(result) !== true) {\n let formattedValue = printValue(value);\n let formattedResult = printValue(result);\n throw new TypeError(`The value of ${options.path || 'field'} could not be cast to a value ` + `that satisfies the schema type: \"${resolvedSchema._type}\". \\n\\n` + `attempted value: ${formattedValue} \\n` + (formattedResult !== formattedValue ? `result of cast: ${formattedResult}` : ''));\n }\n\n return result;\n }\n\n _cast(rawValue, _options) {\n let value = rawValue === undefined ? rawValue : this.transforms.reduce((value, fn) => fn.call(this, value, rawValue, this), rawValue);\n\n if (value === undefined) {\n value = this.getDefault();\n }\n\n return value;\n }\n\n _validate(_value, options = {}, cb) {\n let {\n sync,\n path,\n from = [],\n originalValue = _value,\n strict = this.spec.strict,\n abortEarly = this.spec.abortEarly\n } = options;\n let value = _value;\n\n if (!strict) {\n // this._validating = true;\n value = this._cast(value, _extends({\n assert: false\n }, options)); // this._validating = false;\n } // value is cast, we can check if it meets type requirements\n\n\n let args = {\n value,\n path,\n options,\n originalValue,\n schema: this,\n label: this.spec.label,\n sync,\n from\n };\n let initialTests = [];\n if (this._typeError) initialTests.push(this._typeError);\n let finalTests = [];\n if (this._whitelistError) finalTests.push(this._whitelistError);\n if (this._blacklistError) finalTests.push(this._blacklistError);\n runTests({\n args,\n value,\n path,\n sync,\n tests: initialTests,\n endEarly: abortEarly\n }, err => {\n if (err) return void cb(err, value);\n runTests({\n tests: this.tests.concat(finalTests),\n args,\n path,\n sync,\n value,\n endEarly: abortEarly\n }, cb);\n });\n }\n\n validate(value, options, maybeCb) {\n let schema = this.resolve(_extends({}, options, {\n value\n })); // callback case is for nested validations\n\n return typeof maybeCb === 'function' ? schema._validate(value, options, maybeCb) : new Promise((resolve, reject) => schema._validate(value, options, (err, value) => {\n if (err) reject(err);else resolve(value);\n }));\n }\n\n validateSync(value, options) {\n let schema = this.resolve(_extends({}, options, {\n value\n }));\n let result;\n\n schema._validate(value, _extends({}, options, {\n sync: true\n }), (err, value) => {\n if (err) throw err;\n result = value;\n });\n\n return result;\n }\n\n isValid(value, options) {\n return this.validate(value, options).then(() => true, err => {\n if (ValidationError.isError(err)) return false;\n throw err;\n });\n }\n\n isValidSync(value, options) {\n try {\n this.validateSync(value, options);\n return true;\n } catch (err) {\n if (ValidationError.isError(err)) return false;\n throw err;\n }\n }\n\n _getDefault() {\n let defaultValue = this.spec.default;\n\n if (defaultValue == null) {\n return defaultValue;\n }\n\n return typeof defaultValue === 'function' ? defaultValue.call(this) : cloneDeep(defaultValue);\n }\n\n getDefault(options) {\n let schema = this.resolve(options || {});\n return schema._getDefault();\n }\n\n default(def) {\n if (arguments.length === 0) {\n return this._getDefault();\n }\n\n let next = this.clone({\n default: def\n });\n return next;\n }\n\n strict(isStrict = true) {\n let next = this.clone();\n next.spec.strict = isStrict;\n return next;\n }\n\n _isPresent(value) {\n return value != null;\n }\n\n defined(message = locale.defined) {\n return this.test({\n message,\n name: 'defined',\n exclusive: true,\n\n test(value) {\n return value !== undefined;\n }\n\n });\n }\n\n required(message = locale.required) {\n return this.clone({\n presence: 'required'\n }).withMutation(s => s.test({\n message,\n name: 'required',\n exclusive: true,\n\n test(value) {\n return this.schema._isPresent(value);\n }\n\n }));\n }\n\n notRequired() {\n let next = this.clone({\n presence: 'optional'\n });\n next.tests = next.tests.filter(test => test.OPTIONS.name !== 'required');\n return next;\n }\n\n nullable(isNullable = true) {\n let next = this.clone({\n nullable: isNullable !== false\n });\n return next;\n }\n\n transform(fn) {\n let next = this.clone();\n next.transforms.push(fn);\n return next;\n }\n /**\n * Adds a test function to the schema's queue of tests.\n * tests can be exclusive or non-exclusive.\n *\n * - exclusive tests, will replace any existing tests of the same name.\n * - non-exclusive: can be stacked\n *\n * If a non-exclusive test is added to a schema with an exclusive test of the same name\n * the exclusive test is removed and further tests of the same name will be stacked.\n *\n * If an exclusive test is added to a schema with non-exclusive tests of the same name\n * the previous tests are removed and further tests of the same name will replace each other.\n */\n\n\n test(...args) {\n let opts;\n\n if (args.length === 1) {\n if (typeof args[0] === 'function') {\n opts = {\n test: args[0]\n };\n } else {\n opts = args[0];\n }\n } else if (args.length === 2) {\n opts = {\n name: args[0],\n test: args[1]\n };\n } else {\n opts = {\n name: args[0],\n message: args[1],\n test: args[2]\n };\n }\n\n if (opts.message === undefined) opts.message = locale.default;\n if (typeof opts.test !== 'function') throw new TypeError('`test` is a required parameters');\n let next = this.clone();\n let validate = createValidation(opts);\n let isExclusive = opts.exclusive || opts.name && next.exclusiveTests[opts.name] === true;\n\n if (opts.exclusive) {\n if (!opts.name) throw new TypeError('Exclusive tests must provide a unique `name` identifying the test');\n }\n\n if (opts.name) next.exclusiveTests[opts.name] = !!opts.exclusive;\n next.tests = next.tests.filter(fn => {\n if (fn.OPTIONS.name === opts.name) {\n if (isExclusive) return false;\n if (fn.OPTIONS.test === validate.OPTIONS.test) return false;\n }\n\n return true;\n });\n next.tests.push(validate);\n return next;\n }\n\n when(keys, options) {\n if (!Array.isArray(keys) && typeof keys !== 'string') {\n options = keys;\n keys = '.';\n }\n\n let next = this.clone();\n let deps = toArray(keys).map(key => new Ref(key));\n deps.forEach(dep => {\n // @ts-ignore\n if (dep.isSibling) next.deps.push(dep.key);\n });\n next.conditions.push(new Condition(deps, options));\n return next;\n }\n\n typeError(message) {\n let next = this.clone();\n next._typeError = createValidation({\n message,\n name: 'typeError',\n\n test(value) {\n if (value !== undefined && !this.schema.isType(value)) return this.createError({\n params: {\n type: this.schema._type\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n oneOf(enums, message = locale.oneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._whitelist.add(val);\n\n next._blacklist.delete(val);\n });\n next._whitelistError = createValidation({\n message,\n name: 'oneOf',\n\n test(value) {\n if (value === undefined) return true;\n let valids = this.schema._whitelist;\n let resolved = valids.resolveAll(this.resolve);\n return resolved.includes(value) ? true : this.createError({\n params: {\n values: valids.toArray().join(', '),\n resolved\n }\n });\n }\n\n });\n return next;\n }\n\n notOneOf(enums, message = locale.notOneOf) {\n let next = this.clone();\n enums.forEach(val => {\n next._blacklist.add(val);\n\n next._whitelist.delete(val);\n });\n next._blacklistError = createValidation({\n message,\n name: 'notOneOf',\n\n test(value) {\n let invalids = this.schema._blacklist;\n let resolved = invalids.resolveAll(this.resolve);\n if (resolved.includes(value)) return this.createError({\n params: {\n values: invalids.toArray().join(', '),\n resolved\n }\n });\n return true;\n }\n\n });\n return next;\n }\n\n strip(strip = true) {\n let next = this.clone();\n next.spec.strip = strip;\n return next;\n }\n\n describe() {\n const next = this.clone();\n const {\n label,\n meta\n } = next.spec;\n const description = {\n meta,\n label,\n type: next.type,\n oneOf: next._whitelist.describe(),\n notOneOf: next._blacklist.describe(),\n tests: next.tests.map(fn => ({\n name: fn.OPTIONS.name,\n params: fn.OPTIONS.params\n })).filter((n, idx, list) => list.findIndex(c => c.name === n.name) === idx)\n };\n return description;\n }\n\n} // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n// @ts-expect-error\nBaseSchema.prototype.__isYupSchema__ = true;\n\nfor (const method of ['validate', 'validateSync']) BaseSchema.prototype[`${method}At`] = function (path, value, options = {}) {\n const {\n parent,\n parentPath,\n schema\n } = getIn(this, path, value, options.context);\n return schema[method](parent && parent[parentPath], _extends({}, options, {\n parent,\n path\n }));\n};\n\nfor (const alias of ['equals', 'is']) BaseSchema.prototype[alias] = BaseSchema.prototype.oneOf;\n\nfor (const alias of ['not', 'nope']) BaseSchema.prototype[alias] = BaseSchema.prototype.notOneOf;\n\nBaseSchema.prototype.optional = BaseSchema.prototype.notRequired;","import BaseSchema from './schema';\nconst Mixed = BaseSchema;\nexport default Mixed;\nexport function create() {\n return new Mixed();\n} // XXX: this is using the Base schema so that `addMethod(mixed)` works as a base class\n\ncreate.prototype = Mixed.prototype;","const isAbsent = value => value == null;\n\nexport default isAbsent;","import BaseSchema from './schema';\nimport { boolean as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nexport function create() {\n return new BooleanSchema();\n}\nexport default class BooleanSchema extends BaseSchema {\n constructor() {\n super({\n type: 'boolean'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (!this.isType(value)) {\n if (/^(true|1)$/i.test(String(value))) return true;\n if (/^(false|0)$/i.test(String(value))) return false;\n }\n\n return value;\n });\n });\n }\n\n _typeCheck(v) {\n if (v instanceof Boolean) v = v.valueOf();\n return typeof v === 'boolean';\n }\n\n isTrue(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'true'\n },\n\n test(value) {\n return isAbsent(value) || value === true;\n }\n\n });\n }\n\n isFalse(message = locale.isValue) {\n return this.test({\n message,\n name: 'is-value',\n exclusive: true,\n params: {\n value: 'false'\n },\n\n test(value) {\n return isAbsent(value) || value === false;\n }\n\n });\n }\n\n}\ncreate.prototype = BooleanSchema.prototype;","import { string as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema'; // eslint-disable-next-line\n\nlet rEmail = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i; // eslint-disable-next-line\n\nlet rUrl = /^((https?|ftp):)?\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i; // eslint-disable-next-line\n\nlet rUUID = /^(?:[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;\n\nlet isTrimmed = value => isAbsent(value) || value === value.trim();\n\nlet objStringTag = {}.toString();\nexport function create() {\n return new StringSchema();\n}\nexport default class StringSchema extends BaseSchema {\n constructor() {\n super({\n type: 'string'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n if (Array.isArray(value)) return value;\n const strValue = value != null && value.toString ? value.toString() : value;\n if (strValue === objStringTag) return value;\n return strValue;\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof String) value = value.valueOf();\n return typeof value === 'string';\n }\n\n _isPresent(value) {\n return super._isPresent(value) && !!value.length;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n name: 'max',\n exclusive: true,\n message,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n matches(regex, options) {\n let excludeEmptyString = false;\n let message;\n let name;\n\n if (options) {\n if (typeof options === 'object') {\n ({\n excludeEmptyString = false,\n message,\n name\n } = options);\n } else {\n message = options;\n }\n }\n\n return this.test({\n name: name || 'matches',\n message: message || locale.matches,\n params: {\n regex\n },\n test: value => isAbsent(value) || value === '' && excludeEmptyString || value.search(regex) !== -1\n });\n }\n\n email(message = locale.email) {\n return this.matches(rEmail, {\n name: 'email',\n message,\n excludeEmptyString: true\n });\n }\n\n url(message = locale.url) {\n return this.matches(rUrl, {\n name: 'url',\n message,\n excludeEmptyString: true\n });\n }\n\n uuid(message = locale.uuid) {\n return this.matches(rUUID, {\n name: 'uuid',\n message,\n excludeEmptyString: false\n });\n } //-- transforms --\n\n\n ensure() {\n return this.default('').transform(val => val === null ? '' : val);\n }\n\n trim(message = locale.trim) {\n return this.transform(val => val != null ? val.trim() : val).test({\n message,\n name: 'trim',\n test: isTrimmed\n });\n }\n\n lowercase(message = locale.lowercase) {\n return this.transform(value => !isAbsent(value) ? value.toLowerCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toLowerCase()\n });\n }\n\n uppercase(message = locale.uppercase) {\n return this.transform(value => !isAbsent(value) ? value.toUpperCase() : value).test({\n message,\n name: 'string_case',\n exclusive: true,\n test: value => isAbsent(value) || value === value.toUpperCase()\n });\n }\n\n}\ncreate.prototype = StringSchema.prototype; //\n// String Interfaces\n//","import { number as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport BaseSchema from './schema';\n\nlet isNaN = value => value != +value;\n\nexport function create() {\n return new NumberSchema();\n}\nexport default class NumberSchema extends BaseSchema {\n constructor() {\n super({\n type: 'number'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n let parsed = value;\n\n if (typeof parsed === 'string') {\n parsed = parsed.replace(/\\s/g, '');\n if (parsed === '') return NaN; // don't use parseFloat to avoid positives on alpha-numeric strings\n\n parsed = +parsed;\n }\n\n if (this.isType(parsed)) return parsed;\n return parseFloat(parsed);\n });\n });\n }\n\n _typeCheck(value) {\n if (value instanceof Number) value = value.valueOf();\n return typeof value === 'number' && !isNaN(value);\n }\n\n min(min, message = locale.min) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(max);\n }\n\n });\n }\n\n lessThan(less, message = locale.lessThan) {\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n less\n },\n\n test(value) {\n return isAbsent(value) || value < this.resolve(less);\n }\n\n });\n }\n\n moreThan(more, message = locale.moreThan) {\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n more\n },\n\n test(value) {\n return isAbsent(value) || value > this.resolve(more);\n }\n\n });\n }\n\n positive(msg = locale.positive) {\n return this.moreThan(0, msg);\n }\n\n negative(msg = locale.negative) {\n return this.lessThan(0, msg);\n }\n\n integer(message = locale.integer) {\n return this.test({\n name: 'integer',\n message,\n test: val => isAbsent(val) || Number.isInteger(val)\n });\n }\n\n truncate() {\n return this.transform(value => !isAbsent(value) ? value | 0 : value);\n }\n\n round(method) {\n var _method;\n\n let avail = ['ceil', 'floor', 'round', 'trunc'];\n method = ((_method = method) == null ? void 0 : _method.toLowerCase()) || 'round'; // this exists for symemtry with the new Math.trunc\n\n if (method === 'trunc') return this.truncate();\n if (avail.indexOf(method.toLowerCase()) === -1) throw new TypeError('Only valid options for round() are: ' + avail.join(', '));\n return this.transform(value => !isAbsent(value) ? Math[method](value) : value);\n }\n\n}\ncreate.prototype = NumberSchema.prototype; //\n// Number Interfaces\n//","/* eslint-disable */\n\n/**\n *\n * Date.parse with progressive enhancement for ISO 8601 \n * NON-CONFORMANT EDITION.\n * © 2011 Colin Snover \n * Released under MIT license.\n */\n// 1 YYYY 2 MM 3 DD 4 HH 5 mm 6 ss 7 msec 8 Z 9 ± 10 tzHH 11 tzmm\nvar isoReg = /^(\\d{4}|[+\\-]\\d{6})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:[ T]?(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\nexport default function parseIsoDate(date) {\n var numericKeys = [1, 4, 5, 6, 7, 10, 11],\n minutesOffset = 0,\n timestamp,\n struct;\n\n if (struct = isoReg.exec(date)) {\n // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC\n for (var i = 0, k; k = numericKeys[i]; ++i) struct[k] = +struct[k] || 0; // allow undefined days and months\n\n\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1; // allow arbitrary sub-second precision beyond milliseconds\n\n struct[7] = struct[7] ? String(struct[7]).substr(0, 3) : 0; // timestamps without timezone identifiers should be considered local time\n\n if ((struct[8] === undefined || struct[8] === '') && (struct[9] === undefined || struct[9] === '')) timestamp = +new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);else {\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') minutesOffset = 0 - minutesOffset;\n }\n\n timestamp = Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n } else timestamp = Date.parse ? Date.parse(date) : NaN;\n\n return timestamp;\n}","// @ts-ignore\nimport isoParse from './util/isodate';\nimport { date as locale } from './locale';\nimport isAbsent from './util/isAbsent';\nimport Ref from './Reference';\nimport BaseSchema from './schema';\nlet invalidDate = new Date('');\n\nlet isDate = obj => Object.prototype.toString.call(obj) === '[object Date]';\n\nexport function create() {\n return new DateSchema();\n}\nexport default class DateSchema extends BaseSchema {\n constructor() {\n super({\n type: 'date'\n });\n this.withMutation(() => {\n this.transform(function (value) {\n if (this.isType(value)) return value;\n value = isoParse(value); // 0 is a valid timestamp equivalent to 1970-01-01T00:00:00Z(unix epoch) or before.\n\n return !isNaN(value) ? new Date(value) : invalidDate;\n });\n });\n }\n\n _typeCheck(v) {\n return isDate(v) && !isNaN(v.getTime());\n }\n\n prepareParam(ref, name) {\n let param;\n\n if (!Ref.isRef(ref)) {\n let cast = this.cast(ref);\n if (!this._typeCheck(cast)) throw new TypeError(`\\`${name}\\` must be a Date or a value that can be \\`cast()\\` to a Date`);\n param = cast;\n } else {\n param = ref;\n }\n\n return param;\n }\n\n min(min, message = locale.min) {\n let limit = this.prepareParam(min, 'min');\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n test(value) {\n return isAbsent(value) || value >= this.resolve(limit);\n }\n\n });\n }\n\n max(max, message = locale.max) {\n let limit = this.prepareParam(max, 'max');\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value <= this.resolve(limit);\n }\n\n });\n }\n\n}\nDateSchema.INVALID_DATE = invalidDate;\ncreate.prototype = DateSchema.prototype;\ncreate.INVALID_DATE = invalidDate;","function findIndex(arr, err) {\n let idx = Infinity;\n arr.some((key, ii) => {\n var _err$path;\n\n if (((_err$path = err.path) == null ? void 0 : _err$path.indexOf(key)) !== -1) {\n idx = ii;\n return true;\n }\n });\n return idx;\n}\n\nexport default function sortByKeyOrder(keys) {\n return (a, b) => {\n return findIndex(keys, a) - findIndex(keys, b);\n };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport has from 'lodash/has';\nimport snakeCase from 'lodash/snakeCase';\nimport camelCase from 'lodash/camelCase';\nimport mapKeys from 'lodash/mapKeys';\nimport mapValues from 'lodash/mapValues';\nimport { getter } from 'property-expr';\nimport { object as locale } from './locale';\nimport sortFields from './util/sortFields';\nimport sortByKeyOrder from './util/sortByKeyOrder';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\n\nlet isObject = obj => Object.prototype.toString.call(obj) === '[object Object]';\n\nfunction unknown(ctx, value) {\n let known = Object.keys(ctx.fields);\n return Object.keys(value).filter(key => known.indexOf(key) === -1);\n}\n\nconst defaultSort = sortByKeyOrder([]);\nexport default class ObjectSchema extends BaseSchema {\n constructor(spec) {\n super({\n type: 'object'\n });\n this.fields = Object.create(null);\n this._sortErrors = defaultSort;\n this._nodes = [];\n this._excludedEdges = [];\n this.withMutation(() => {\n this.transform(function coerce(value) {\n if (typeof value === 'string') {\n try {\n value = JSON.parse(value);\n } catch (err) {\n value = null;\n }\n }\n\n if (this.isType(value)) return value;\n return null;\n });\n\n if (spec) {\n this.shape(spec);\n }\n });\n }\n\n _typeCheck(value) {\n return isObject(value) || typeof value === 'function';\n }\n\n _cast(_value, options = {}) {\n var _options$stripUnknown;\n\n let value = super._cast(_value, options); //should ignore nulls here\n\n\n if (value === undefined) return this.getDefault();\n if (!this._typeCheck(value)) return value;\n let fields = this.fields;\n let strip = (_options$stripUnknown = options.stripUnknown) != null ? _options$stripUnknown : this.spec.noUnknown;\n\n let props = this._nodes.concat(Object.keys(value).filter(v => this._nodes.indexOf(v) === -1));\n\n let intermediateValue = {}; // is filled during the transform below\n\n let innerOptions = _extends({}, options, {\n parent: intermediateValue,\n __validating: options.__validating || false\n });\n\n let isChanged = false;\n\n for (const prop of props) {\n let field = fields[prop];\n let exists = has(value, prop);\n\n if (field) {\n let fieldValue;\n let inputValue = value[prop]; // safe to mutate since this is fired in sequence\n\n innerOptions.path = (options.path ? `${options.path}.` : '') + prop; // innerOptions.value = value[prop];\n\n field = field.resolve({\n value: inputValue,\n context: options.context,\n parent: intermediateValue\n });\n let fieldSpec = 'spec' in field ? field.spec : undefined;\n let strict = fieldSpec == null ? void 0 : fieldSpec.strict;\n\n if (fieldSpec == null ? void 0 : fieldSpec.strip) {\n isChanged = isChanged || prop in value;\n continue;\n }\n\n fieldValue = !options.__validating || !strict ? // TODO: use _cast, this is double resolving\n field.cast(value[prop], innerOptions) : value[prop];\n\n if (fieldValue !== undefined) {\n intermediateValue[prop] = fieldValue;\n }\n } else if (exists && !strip) {\n intermediateValue[prop] = value[prop];\n }\n\n if (intermediateValue[prop] !== value[prop]) {\n isChanged = true;\n }\n }\n\n return isChanged ? intermediateValue : value;\n }\n\n _validate(_value, opts = {}, callback) {\n let errors = [];\n let {\n sync,\n from = [],\n originalValue = _value,\n abortEarly = this.spec.abortEarly,\n recursive = this.spec.recursive\n } = opts;\n from = [{\n schema: this,\n value: originalValue\n }, ...from]; // this flag is needed for handling `strict` correctly in the context of\n // validation vs just casting. e.g strict() on a field is only used when validating\n\n opts.__validating = true;\n opts.originalValue = originalValue;\n opts.from = from;\n\n super._validate(_value, opts, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || abortEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !isObject(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value;\n\n let tests = this._nodes.map(key => (_, cb) => {\n let path = key.indexOf('.') === -1 ? (opts.path ? `${opts.path}.` : '') + key : `${opts.path || ''}[\"${key}\"]`;\n let field = this.fields[key];\n\n if (field && 'validate' in field) {\n field.validate(value[key], _extends({}, opts, {\n // @ts-ignore\n path,\n from,\n // inner fields are always strict:\n // 1. this isn't strict so the casting will also have cast inner values\n // 2. this is strict in which case the nested values weren't cast either\n strict: true,\n parent: value,\n originalValue: originalValue[key]\n }), cb);\n return;\n }\n\n cb(null);\n });\n\n runTests({\n sync,\n tests,\n value,\n errors,\n endEarly: abortEarly,\n sort: this._sortErrors,\n path: opts.path\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.fields = _extends({}, this.fields);\n next._nodes = this._nodes;\n next._excludedEdges = this._excludedEdges;\n next._sortErrors = this._sortErrors;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n let nextFields = next.fields;\n\n for (let [field, schemaOrRef] of Object.entries(this.fields)) {\n const target = nextFields[field];\n\n if (target === undefined) {\n nextFields[field] = schemaOrRef;\n } else if (target instanceof BaseSchema && schemaOrRef instanceof BaseSchema) {\n nextFields[field] = schemaOrRef.concat(target);\n }\n }\n\n return next.withMutation(() => next.shape(nextFields, this._excludedEdges));\n }\n\n getDefaultFromShape() {\n let dft = {};\n\n this._nodes.forEach(key => {\n const field = this.fields[key];\n dft[key] = 'default' in field ? field.getDefault() : undefined;\n });\n\n return dft;\n }\n\n _getDefault() {\n if ('default' in this.spec) {\n return super._getDefault();\n } // if there is no default set invent one\n\n\n if (!this._nodes.length) {\n return undefined;\n }\n\n return this.getDefaultFromShape();\n }\n\n shape(additions, excludes = []) {\n let next = this.clone();\n let fields = Object.assign(next.fields, additions);\n next.fields = fields;\n next._sortErrors = sortByKeyOrder(Object.keys(fields));\n\n if (excludes.length) {\n // this is a convenience for when users only supply a single pair\n if (!Array.isArray(excludes[0])) excludes = [excludes];\n next._excludedEdges = [...next._excludedEdges, ...excludes];\n }\n\n next._nodes = sortFields(fields, next._excludedEdges);\n return next;\n }\n\n pick(keys) {\n const picked = {};\n\n for (const key of keys) {\n if (this.fields[key]) picked[key] = this.fields[key];\n }\n\n return this.clone().withMutation(next => {\n next.fields = {};\n return next.shape(picked);\n });\n }\n\n omit(keys) {\n const next = this.clone();\n const fields = next.fields;\n next.fields = {};\n\n for (const key of keys) {\n delete fields[key];\n }\n\n return next.withMutation(() => next.shape(fields));\n }\n\n from(from, to, alias) {\n let fromGetter = getter(from, true);\n return this.transform(obj => {\n if (obj == null) return obj;\n let newObj = obj;\n\n if (has(obj, from)) {\n newObj = _extends({}, obj);\n if (!alias) delete newObj[from];\n newObj[to] = fromGetter(obj);\n }\n\n return newObj;\n });\n }\n\n noUnknown(noAllow = true, message = locale.noUnknown) {\n if (typeof noAllow === 'string') {\n message = noAllow;\n noAllow = true;\n }\n\n let next = this.test({\n name: 'noUnknown',\n exclusive: true,\n message: message,\n\n test(value) {\n if (value == null) return true;\n const unknownKeys = unknown(this.schema, value);\n return !noAllow || unknownKeys.length === 0 || this.createError({\n params: {\n unknown: unknownKeys.join(', ')\n }\n });\n }\n\n });\n next.spec.noUnknown = noAllow;\n return next;\n }\n\n unknown(allow = true, message = locale.noUnknown) {\n return this.noUnknown(!allow, message);\n }\n\n transformKeys(fn) {\n return this.transform(obj => obj && mapKeys(obj, (_, key) => fn(key)));\n }\n\n camelCase() {\n return this.transformKeys(camelCase);\n }\n\n snakeCase() {\n return this.transformKeys(snakeCase);\n }\n\n constantCase() {\n return this.transformKeys(key => snakeCase(key).toUpperCase());\n }\n\n describe() {\n let base = super.describe();\n base.fields = mapValues(this.fields, value => value.describe());\n return base;\n }\n\n}\nexport function create(spec) {\n return new ObjectSchema(spec);\n}\ncreate.prototype = ObjectSchema.prototype;","import has from 'lodash/has'; // @ts-expect-error\n\nimport toposort from 'toposort';\nimport { split } from 'property-expr';\nimport Ref from '../Reference';\nimport isSchema from './isSchema';\nexport default function sortFields(fields, excludedEdges = []) {\n let edges = [];\n let nodes = new Set();\n let excludes = new Set(excludedEdges.map(([a, b]) => `${a}-${b}`));\n\n function addNode(depPath, key) {\n let node = split(depPath)[0];\n nodes.add(node);\n if (!excludes.has(`${key}-${node}`)) edges.push([key, node]);\n }\n\n for (const key in fields) if (has(fields, key)) {\n let value = fields[key];\n nodes.add(key);\n if (Ref.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && 'deps' in value) value.deps.forEach(path => addNode(path, key));\n }\n\n return toposort.array(Array.from(nodes), edges).reverse();\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport isAbsent from './util/isAbsent';\nimport isSchema from './util/isSchema';\nimport printValue from './util/printValue';\nimport { array as locale } from './locale';\nimport runTests from './util/runTests';\nimport ValidationError from './ValidationError';\nimport BaseSchema from './schema';\nexport function create(type) {\n return new ArraySchema(type);\n}\nexport default class ArraySchema extends BaseSchema {\n constructor(type) {\n super({\n type: 'array'\n }); // `undefined` specifically means uninitialized, as opposed to\n // \"no subtype\"\n\n this.innerType = void 0;\n this.innerType = type;\n this.withMutation(() => {\n this.transform(function (values) {\n if (typeof values === 'string') try {\n values = JSON.parse(values);\n } catch (err) {\n values = null;\n }\n return this.isType(values) ? values : null;\n });\n });\n }\n\n _typeCheck(v) {\n return Array.isArray(v);\n }\n\n get _subType() {\n return this.innerType;\n }\n\n _cast(_value, _opts) {\n const value = super._cast(_value, _opts); //should ignore nulls here\n\n\n if (!this._typeCheck(value) || !this.innerType) return value;\n let isChanged = false;\n const castArray = value.map((v, idx) => {\n const castElement = this.innerType.cast(v, _extends({}, _opts, {\n path: `${_opts.path || ''}[${idx}]`\n }));\n\n if (castElement !== v) {\n isChanged = true;\n }\n\n return castElement;\n });\n return isChanged ? castArray : value;\n }\n\n _validate(_value, options = {}, callback) {\n var _options$abortEarly, _options$recursive;\n\n let errors = [];\n let sync = options.sync;\n let path = options.path;\n let innerType = this.innerType;\n let endEarly = (_options$abortEarly = options.abortEarly) != null ? _options$abortEarly : this.spec.abortEarly;\n let recursive = (_options$recursive = options.recursive) != null ? _options$recursive : this.spec.recursive;\n let originalValue = options.originalValue != null ? options.originalValue : _value;\n\n super._validate(_value, options, (err, value) => {\n if (err) {\n if (!ValidationError.isError(err) || endEarly) {\n return void callback(err, value);\n }\n\n errors.push(err);\n }\n\n if (!recursive || !innerType || !this._typeCheck(value)) {\n callback(errors[0] || null, value);\n return;\n }\n\n originalValue = originalValue || value; // #950 Ensure that sparse array empty slots are validated\n\n let tests = new Array(value.length);\n\n for (let idx = 0; idx < value.length; idx++) {\n let item = value[idx];\n let path = `${options.path || ''}[${idx}]`; // object._validate note for isStrict explanation\n\n let innerOptions = _extends({}, options, {\n path,\n strict: true,\n parent: value,\n index: idx,\n originalValue: originalValue[idx]\n });\n\n tests[idx] = (_, cb) => innerType.validate(item, innerOptions, cb);\n }\n\n runTests({\n sync,\n path,\n value,\n errors,\n endEarly,\n tests\n }, callback);\n });\n }\n\n clone(spec) {\n const next = super.clone(spec);\n next.innerType = this.innerType;\n return next;\n }\n\n concat(schema) {\n let next = super.concat(schema);\n next.innerType = this.innerType;\n if (schema.innerType) next.innerType = next.innerType ? // @ts-expect-error Lazy doesn't have concat()\n next.innerType.concat(schema.innerType) : schema.innerType;\n return next;\n }\n\n of(schema) {\n // FIXME: this should return a new instance of array without the default to be\n let next = this.clone();\n if (!isSchema(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema not: ' + printValue(schema)); // FIXME(ts):\n\n next.innerType = schema;\n return next;\n }\n\n length(length, message = locale.length) {\n return this.test({\n message,\n name: 'length',\n exclusive: true,\n params: {\n length\n },\n\n test(value) {\n return isAbsent(value) || value.length === this.resolve(length);\n }\n\n });\n }\n\n min(min, message) {\n message = message || locale.min;\n return this.test({\n message,\n name: 'min',\n exclusive: true,\n params: {\n min\n },\n\n // FIXME(ts): Array\n test(value) {\n return isAbsent(value) || value.length >= this.resolve(min);\n }\n\n });\n }\n\n max(max, message) {\n message = message || locale.max;\n return this.test({\n message,\n name: 'max',\n exclusive: true,\n params: {\n max\n },\n\n test(value) {\n return isAbsent(value) || value.length <= this.resolve(max);\n }\n\n });\n }\n\n ensure() {\n return this.default(() => []).transform((val, original) => {\n // We don't want to return `null` for nullable schema\n if (this._typeCheck(val)) return val;\n return original == null ? [] : [].concat(original);\n });\n }\n\n compact(rejector) {\n let reject = !rejector ? v => !!v : (v, i, a) => !rejector(v, i, a);\n return this.transform(values => values != null ? values.filter(reject) : values);\n }\n\n describe() {\n let base = super.describe();\n if (this.innerType) base.innerType = this.innerType.describe();\n return base;\n }\n\n nullable(isNullable = true) {\n return super.nullable(isNullable);\n }\n\n defined() {\n return super.defined();\n }\n\n required(msg) {\n return super.required(msg);\n }\n\n}\ncreate.prototype = ArraySchema.prototype; //\n// Interfaces\n//","import locale from './locale';\nexport default function setLocale(custom) {\n Object.keys(custom).forEach(type => {\n // @ts-ignore\n Object.keys(custom[type]).forEach(method => {\n // @ts-ignore\n locale[type][method] = custom[type][method];\n });\n });\n}","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.24.0\"\n};","/**\n * Copyright (c) 2013 Tim Perry\n * Licensed under the MIT license.\n *\n * Copied from https://github.com/pimterry/loglevel (1.7.0)\n * and modified to remove browser and AMD module support, while keeping CommonJS.\n * It was causing a conflict when this is bundled using CommonJS, and then loaded via RequireJS.\n * The proper way to fix this module is to have a build that outputs CommonJS and AMD separately\n * which needs to be submitted to the original module's repo.\n */\n/* istanbul ignore file */\n/* eslint-disable */\n// Slightly dubious tricks to cut down minimized file size\nvar noop = function () { };\nvar undefinedType = \"undefined\";\nvar isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (/Trident\\/|MSIE /.test(window.navigator.userAgent));\nvar logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n];\n// Cross-browser bind equivalent that works at least back to IE6\nfunction bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n }\n else {\n try {\n return Function.prototype.bind.call(method, obj);\n }\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// Trace() doesn't print the message in IE, so for that case we need to wrap it\nfunction traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n }\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)\n console.trace();\n}\n// Build the best logging method possible for this env\n// Wherever possible we want to bind, not wrap, to preserve stack traces\nfunction realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n }\n else if (methodName === 'trace' && isIE) {\n return traceForIE;\n }\n else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n }\n else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n }\n else {\n return noop;\n }\n}\n// These private functions always need `this` to be set properly\nfunction 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 // Define log.log as an alias for log.debug\n this.log = this.debug;\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\nfunction 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// By default, we use closely bound real methods wherever possible, and\n// otherwise we wait for a console to appear, and then try again.\nfunction defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n}\nfunction Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n }\n else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n if (typeof window === undefinedType || !storageKey)\n return;\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n }\n catch (ignore) { }\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n }\n catch (ignore) { }\n }\n function getPersistedLevel() {\n var storedLevel;\n if (typeof window === undefinedType || !storageKey)\n return;\n try {\n storedLevel = window.localStorage[storageKey];\n }\n catch (ignore) { }\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(encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n }\n catch (ignore) { }\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 return storedLevel;\n }\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n self.name = name;\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5 };\n self.methodFactory = factory || defaultMethodFactory;\n self.getLevel = function () {\n return currentLevel;\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 }\n else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n self.enableAll = function (persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n self.disableAll = function (persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n self.setLevel(initialLevel, false);\n}\n/*\n *\n * Top-level API\n *\n */\nvar defaultLogger = new Logger();\nvar _loggersByName = {};\ndefaultLogger.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 var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n};\n// Grab the current global log variable in case of overwrite\nvar _log = (typeof window !== undefinedType) ? window.log : undefined;\ndefaultLogger.noConflict = function () {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n return defaultLogger;\n};\ndefaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n};\n// ES6 default export, for compatibility\ndefaultLogger['default'] = defaultLogger;\nmodule.exports = defaultLogger;\n//# sourceMappingURL=loglevel.js.map","var SID_CHARS = '1234567890abcdef';\nvar SID_CHAR_LENGTH = 32;\n// copied from: https://code.hq.twilio.com/flex/monkey/blob/0fdce2b6c52d6be0b17a5cdb92f0c54f119b8ea8/src/client/lib/sid.ts#L39\n/**\n * Generates a random sid using given prefix.\n * @param {string} prefix\n * @returns string\n */\nfunction createSID(prefix) {\n var result = '';\n for (var i = 0; i < SID_CHAR_LENGTH; i++) {\n result += SID_CHARS.charAt(Math.floor(Math.random() * SID_CHARS.length));\n }\n return \"\" + prefix + result;\n}\nexports.sessionSID = createSID('SS');\nexports.createSID = createSID;\n//# sourceMappingURL=sid.js.map","'use strict';\n/**\n * @private\n * Represents a warning encountered when\n * interacting with one of Twilio's services.\n */\n// eslint-disable-next-line\nvar TwilioWarning = {\n recordingMediaLost: 'recording-media-lost'\n};\nmodule.exports = TwilioWarning;\n//# sourceMappingURL=twiliowarning.js.map","/* globals MediaStream */\n'use strict';\nif (typeof MediaStream === 'function') {\n module.exports = MediaStream;\n}\nelse {\n module.exports = function MediaStream() {\n throw new Error('MediaStream is not supported');\n };\n}\n//# sourceMappingURL=mediastream.js.map","/* globals RTCSessionDescription */\n'use strict';\n// This class wraps Chrome's RTCSessionDescription implementation. It provides\n// one piece of functionality not currently present in Chrome, namely\n//\n// 1. Rollback support\n// https://bugs.chromium.org/p/webrtc/issues/detail?id=4676\n//\nvar ChromeRTCSessionDescription = /** @class */ (function () {\n function ChromeRTCSessionDescription(descriptionInitDict) {\n this.descriptionInitDict = descriptionInitDict;\n // If this constructor is called with an object with a .type property set to\n // \"rollback\", we should not call Chrome's RTCSessionDescription constructor,\n // because this would throw an RTCSdpType error.\n var description = descriptionInitDict && descriptionInitDict.type === 'rollback'\n ? null\n : new RTCSessionDescription(descriptionInitDict);\n Object.defineProperties(this, {\n _description: {\n get: function () {\n return description;\n }\n }\n });\n }\n Object.defineProperty(ChromeRTCSessionDescription.prototype, \"sdp\", {\n get: function () {\n return this._description ? this._description.sdp : this.descriptionInitDict.sdp;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ChromeRTCSessionDescription.prototype, \"type\", {\n get: function () {\n return this._description ? this._description.type : this.descriptionInitDict.type;\n },\n enumerable: false,\n configurable: true\n });\n return ChromeRTCSessionDescription;\n}());\nmodule.exports = ChromeRTCSessionDescription;\n//# sourceMappingURL=chrome.js.map","'use strict';\nvar defer = require('./').defer;\nvar states = {\n high: new Set(['low']),\n low: new Set(['high'])\n};\n/**\n * Construct a {@link Latch}.\n * @class\n * @classdesc A {@link Latch} has two states (\"high\" and \"low\") and methods for\n * transitioning between them ({@link Latch#raise} and {@link Latch#lower}).\n * @param {string} [initialState=\"low\"] - either \"high\" or \"low\"\n */\nvar Latch = /** @class */ (function () {\n function Latch(initialState) {\n if (initialState === void 0) { initialState = 'low'; }\n var state = initialState;\n Object.defineProperties(this, {\n _state: {\n set: function (_state) {\n var _this = this;\n if (state !== _state) {\n state = _state;\n var whenDeferreds = this._whenDeferreds.get(state);\n whenDeferreds.forEach(function (deferred) { return deferred.resolve(_this); });\n whenDeferreds.clear();\n }\n },\n get: function () {\n return state;\n }\n },\n _whenDeferreds: {\n value: new Map([\n ['high', new Set()],\n ['low', new Set()]\n ])\n }\n });\n }\n Object.defineProperty(Latch.prototype, \"state\", {\n get: function () {\n return this._state;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Transition to \"low\".\n * @returns {this}\n * @throws {Error}\n */\n Latch.prototype.lower = function () {\n return this.transition('low');\n };\n /**\n * Transition to \"high\".\n * @returns {this}\n * @throws {Error}\n */\n Latch.prototype.raise = function () {\n return this.transition('high');\n };\n /**\n * Transition to a new state.\n * @param {string} newState\n * @returns {this}\n * @throws {Error}\n */\n Latch.prototype.transition = function (newState) {\n if (!states[this.state].has(newState)) {\n throw createUnreachableStateError(this.state, newState);\n }\n this._state = newState;\n return this;\n };\n /**\n * Return a Promise that resolves when the {@link Latch} transitions to\n * the specified state.\n * @param {string} state\n * @returns {Promise}\n */\n Latch.prototype.when = function (state) {\n if (this.state === state) {\n return Promise.resolve(this);\n }\n if (!states[this.state].has(state)) {\n return Promise.reject(createUnreachableStateError(this.state, state));\n }\n var deferred = defer();\n this._whenDeferreds.get(state).add(deferred);\n return deferred.promise;\n };\n return Latch;\n}());\n/**\n * Create an unreachable state Error.\n * @param {string} from - state to be transitioned from\n * @param {string} to - state to be transitioned to\n * @return {Error}\n */\nfunction createUnreachableStateError(from, to) {\n return new Error(\"Cannot transition from \\\"\" + from + \"\\\" to \\\"\" + to + \"\\\"\");\n}\nmodule.exports = Latch;\n//# sourceMappingURL=latch.js.map","/* globals RTCSessionDescription */\n'use strict';\nmodule.exports = RTCSessionDescription;\n//# sourceMappingURL=firefox.js.map","'use strict';\nvar detectSilence = require('../webaudio/detectsilence');\nvar N_ATTEMPTS = 3;\nvar ATTEMPT_DURATION_MS = 250;\n/**\n * Detect whether the audio stream rendered by the given HTMLVideoElement is silent.\n * @param {HTMLAudioElement} el\n * @returns {Promise} true if silent, false if not.\n */\nfunction detectSilentAudio(el) {\n // NOTE(mmalavalli): We have to delay require-ing AudioContextFactory, because\n // it exports a default instance whose constructor calls Object.assign.\n var AudioContextFactory = require('../webaudio/audiocontext');\n var holder = {};\n var audioContext = AudioContextFactory.getOrCreate(holder);\n var attemptsLeft = N_ATTEMPTS;\n function doCheckSilence() {\n attemptsLeft--;\n return detectSilence(audioContext, el.srcObject, ATTEMPT_DURATION_MS).then(function (isSilent) {\n if (!isSilent) {\n return false;\n }\n if (attemptsLeft > 0) {\n return doCheckSilence();\n }\n return true;\n }).catch(function () {\n // NOTE(mmalavalli): If an error is thrown while detect silence, the audio\n // stream is assumed to be silent.\n return true;\n });\n }\n // Resolve the returned Promise with true if 3 consecutive attempts\n // to detect silent audio are successful.\n return doCheckSilence().finally(function () {\n AudioContextFactory.release(holder);\n });\n}\nmodule.exports = detectSilentAudio;\n//# sourceMappingURL=detectsilentaudio.js.map","'use strict';\n/**\n * Return a Promise that resolves after `timeout` milliseconds.\n * @param {?number} [timeout=0]\n * @returns {Promise}\n */\nfunction delay(timeout) {\n timeout = typeof timeout === 'number' ? timeout : 0;\n return new Promise(function (resolve) { return setTimeout(resolve, timeout); });\n}\n/**\n * Attempt to detect silence. The Promise returned by this function returns\n * false as soon as audio is detected or true after `timeout` milliseconds.\n * @param {AudioContext} audioContext\n * @param {MediaStream} stream\n * @param {?number} [timeout=250]\n * @returns {Promise}\n */\nfunction detectSilence(audioContext, stream, timeout) {\n timeout = typeof timeout === 'number' ? timeout : 250;\n var source = audioContext.createMediaStreamSource(stream);\n var analyser = audioContext.createAnalyser();\n analyser.fftSize = 2048;\n source.connect(analyser);\n var samples = new Uint8Array(analyser.fftSize);\n var timeoutDidFire = false;\n setTimeout(function () { timeoutDidFire = true; }, timeout);\n /**\n * We can't use async/await yet, so I need to factor this out.\n * @returns {Promise}\n */\n function doDetectSilence() {\n if (timeoutDidFire) {\n return Promise.resolve(true);\n }\n analyser.getByteTimeDomainData(samples);\n // NOTE(mpatwardhan): An audio MediaStreamTrack can be silent either due to all samples\n // being equal to 128 or all samples being equal to 0.\n return samples.some(function (sample) { return sample !== 128 && sample !== 0; })\n ? Promise.resolve(false)\n : delay().then(doDetectSilence);\n }\n return doDetectSilence().then(function (isSilent) {\n source.disconnect();\n return isSilent;\n }, function (error) {\n source.disconnect();\n throw error;\n });\n}\nmodule.exports = detectSilence;\n//# sourceMappingURL=detectsilence.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaTrack = require('./mediatrack');\n/**\n * An {@link AudioTrack} is a {@link Track} representing audio.\n * @extends Track\n * @property {boolean} isStarted - Whether or not the {@link AudioTrack} has\n * started; if the {@link AudioTrack} started, there is enough audio data to\n * begin playback\n * @property {boolean} isEnabled - Whether or not the {@link AudioTrack} is\n * enabled; if the {@link AudioTrack} is not enabled, it is \"muted\"\n * @property {Track.Kind} kind - \"audio\"\n * @property {MediaStreamTrack} mediaStreamTrack - An audio MediaStreamTrack\n * @property {?MediaStreamTrack} processedTrack - The source of processed audio samples.\n * It is always null as audio processing is not currently supported.\n * @emits AudioTrack#disabled\n * @emits AudioTrack#enabled\n * @emits AudioTrack#started\n */\nvar AudioTrack = /** @class */ (function (_super) {\n __extends(AudioTrack, _super);\n /**\n * Construct an {@link AudioTrack}.\n * @param {MediaTrackTransceiver} mediaTrackTransceiver\n * @param {{log: Log}} options\n */\n function AudioTrack(mediaTrackTransceiver, options) {\n return _super.call(this, mediaTrackTransceiver, options) || this;\n }\n /**\n * Create an HTMLAudioElement and attach the {@link AudioTrack} to it.\n *\n * The HTMLAudioElement's srcObject will be set to a new\n * MediaStream containing the {@link AudioTrack}'s MediaStreamTrack.\n *\n * @returns {HTMLAudioElement} audioElement\n * @example\n * const Video = require('twilio-video');\n *\n * Video.createLocalAudioTrack().then(function(audioTrack) {\n * const audioElement = audioTrack.attach();\n * document.body.appendChild(audioElement);\n * });\n */ /**\n * Attach the {@link AudioTrack} to an existing HTMLMediaElement. The\n * HTMLMediaElement could be an HTMLAudioElement or an HTMLVideoElement.\n *\n * If the HTMLMediaElement's srcObject is not set to a MediaStream,\n * this method sets it to a new MediaStream containing the {@link AudioTrack}'s\n * MediaStreamTrack; otherwise, it adds the {@link MediaTrack}'s\n * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n * MediaStreamTracks of the same kind on the MediaStream, this method removes\n * them.\n *\n * @param {HTMLMediaElement} mediaElement - The HTMLMediaElement to attach to\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * const Video = require('twilio-video');\n *\n * const videoElement = document.createElement('video');\n * document.body.appendChild(videoElement);\n *\n * Video.createLocalAudioTrack().then(function(audioTrack) {\n * audioTrack.attach(videoElement);\n * });\n */ /**\n * Attach the {@link AudioTrack} to an HTMLMediaElement selected by\n * document.querySelector. The HTMLMediaElement could be an\n * HTMLAudioElement or an HTMLVideoElement.\n *\n * If the HTMLMediaElement's srcObject is not set to a MediaStream,\n * this method sets it to a new MediaStream containing the {@link AudioTrack}'s\n * MediaStreamTrack; otherwise, it adds the {@link AudioTrack}'s\n * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n * MediaStreamTracks of the same kind on the MediaStream, this method removes\n * them.\n *\n * @param {string} selector - A query selector for the HTMLMediaElement to\n * attach to\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * const Video = require('twilio-video');\n *\n * const videoElement = document.createElement('video');\n * videoElement.id = 'my-video-element';\n * document.body.appendChild(videoElement);\n *\n * Video.createLocalAudioTrack().then(function(track) {\n * track.attach('#my-video-element');\n * });\n */\n AudioTrack.prototype.attach = function () {\n return _super.prototype.attach.apply(this, arguments);\n };\n /**\n * Detach the {@link AudioTrack} from all previously attached HTMLMediaElements.\n * @returns {Array} mediaElements\n * @example\n * const mediaElements = audioTrack.detach();\n * mediaElements.forEach(mediaElement => mediaElement.remove());\n */ /**\n * Detach the {@link AudioTrack} from a previously attached HTMLMediaElement.\n * @param {HTMLMediaElement} mediaElement - One of the HTMLMediaElements to\n * which the {@link AudioTrack} is attached\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * const videoElement = document.getElementById('my-video-element');\n * audioTrack.detach(videoElement).remove();\n */ /**\n * Detach the {@link AudioTrack} from a previously attached HTMLMediaElement\n * specified by document.querySelector.\n * @param {string} selector - The query selector of HTMLMediaElement to which\n * the {@link AudioTrack} is attached\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * audioTrack.detach('#my-video-element').remove();\n */\n AudioTrack.prototype.detach = function () {\n return _super.prototype.detach.apply(this, arguments);\n };\n return AudioTrack;\n}(MediaTrack));\n/**\n * The {@link AudioTrack} was disabled, i.e. \"muted\".\n * @param {AudioTrack} track - The {@link AudioTrack} that was disabled\n * @event AudioTrack#disabled\n */\n/**\n * The {@link AudioTrack} was enabled, i.e. \"unmuted\".\n * @param {AudioTrack} track - The {@link AudioTrack} that was enabled\n * @event AudioTrack#enabled\n */\n/**\n * The {@link AudioTrack} started. This means there is enough audio data to\n * begin playback.\n * @param {AudioTrack} track - The {@link AudioTrack} that started\n * @event AudioTrack#started\n */\nmodule.exports = AudioTrack;\n//# sourceMappingURL=audiotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar MediaStream = require('../../webrtc').MediaStream;\nvar _a = require('../../util'), waitForEvent = _a.waitForEvent, waitForSometime = _a.waitForSometime;\nvar localMediaRestartDeferreds = require('../../util/localmediarestartdeferreds');\nvar Track = require('./');\n/**\n * A {@link MediaTrack} represents audio or video that can be sent to or\n * received from a {@link Room}.\n * @extends Track\n * @property {Track.ID} id - This {@link Track}'s ID\n * @property {boolean} isStarted - Whether or not the {@link MediaTrack} has\n * started\n * @property {boolean} isEnabled - Whether or not the {@link MediaTrack} is\n * enabled (i.e., whether it is paused or muted)\n * @property {Track.Kind} kind - The kind of the underlying\n * MediaStreamTrack, \"audio\" or \"video\"\n * @property {MediaStreamTrack} mediaStreamTrack - The underlying\n * MediaStreamTrack\n * @emits MediaTrack#disabled\n * @emits MediaTrack#enabled\n * @emits MediaTrack#started\n */\nvar MediaTrack = /** @class */ (function (_super) {\n __extends(MediaTrack, _super);\n /**\n * Construct a {@link MediaTrack}.\n * @param {MediaTrackTransceiver} mediaTrackTransceiver\n * @param {{log: Log}} options\n */\n function MediaTrack(mediaTrackTransceiver, options) {\n var _this = this;\n options = Object.assign({\n playPausedElementsIfNotBackgrounded: isIOS()\n && typeof document === 'object'\n && typeof document.addEventListener === 'function'\n && typeof document.visibilityState === 'string'\n }, options);\n _this = _super.call(this, mediaTrackTransceiver.id, mediaTrackTransceiver.kind, options) || this;\n var isStarted = false;\n options = Object.assign({\n MediaStream: MediaStream\n }, options);\n /* istanbul ignore next */\n Object.defineProperties(_this, {\n _attachments: {\n value: new Set()\n },\n _dummyEl: {\n value: null,\n writable: true\n },\n _elShims: {\n value: new WeakMap()\n },\n _isStarted: {\n get: function () {\n return isStarted;\n },\n set: function (_isStarted) {\n isStarted = _isStarted;\n }\n },\n _playPausedElementsIfNotBackgrounded: {\n value: options.playPausedElementsIfNotBackgrounded\n },\n _shouldShimAttachedElements: {\n value: options.workaroundWebKitBug212780\n || options.playPausedElementsIfNotBackgrounded\n },\n _unprocessedTrack: {\n value: null,\n writable: true\n },\n _MediaStream: {\n value: options.MediaStream\n },\n isStarted: {\n enumerable: true,\n get: function () {\n return isStarted;\n }\n },\n mediaStreamTrack: {\n enumerable: true,\n get: function () {\n return this._unprocessedTrack || mediaTrackTransceiver.track;\n }\n },\n processedTrack: {\n enumerable: true,\n value: null,\n writable: true\n }\n });\n _this._initialize();\n return _this;\n }\n /**\n * @private\n */\n MediaTrack.prototype._start = function () {\n this._log.debug('Started');\n this._isStarted = true;\n if (this._dummyEl) {\n this._dummyEl.oncanplay = null;\n }\n // eslint-disable-next-line no-use-before-define\n this.emit('started', this);\n };\n /**\n * @private\n */\n MediaTrack.prototype._initialize = function () {\n var self = this;\n this._log.debug('Initializing');\n this._dummyEl = this._createElement();\n this.mediaStreamTrack.addEventListener('ended', function onended() {\n self._end();\n self.mediaStreamTrack.removeEventListener('ended', onended);\n });\n if (this._dummyEl) {\n this._dummyEl.muted = true;\n this._dummyEl.oncanplay = this._start.bind(this, this._dummyEl);\n // NOTE(csantos): We always want to attach the original mediaStreamTrack for dummyEl\n this._attach(this._dummyEl, this.mediaStreamTrack);\n this._attachments.delete(this._dummyEl);\n }\n };\n /**\n * @private\n */\n MediaTrack.prototype._end = function () {\n this._log.debug('Ended');\n if (this._dummyEl) {\n this._dummyEl.remove();\n this._dummyEl.srcObject = null;\n this._dummyEl.oncanplay = null;\n this._dummyEl = null;\n }\n };\n MediaTrack.prototype.attach = function (el) {\n var _this = this;\n if (typeof el === 'string') {\n el = this._selectElement(el);\n }\n else if (!el) {\n el = this._createElement();\n }\n this._log.debug('Attempting to attach to element:', el);\n el = this._attach(el);\n if (this._shouldShimAttachedElements && !this._elShims.has(el)) {\n var onUnintentionallyPaused = this._playPausedElementsIfNotBackgrounded\n ? function () { return playIfPausedAndNotBackgrounded(el, _this._log); }\n : null;\n this._elShims.set(el, shimMediaElement(el, onUnintentionallyPaused));\n }\n return el;\n };\n /**\n * Attach the provided MediaStreamTrack to the media element.\n * @param el - The media element to attach to\n * @param mediaStreamTrack - The MediaStreamTrack to attach. If this is\n * not provided, it uses the processedTrack if it exists\n * or it defaults to the current mediaStreamTrack\n * @private\n */\n MediaTrack.prototype._attach = function (el, mediaStreamTrack) {\n if (mediaStreamTrack === void 0) { mediaStreamTrack = this.processedTrack || this.mediaStreamTrack; }\n var mediaStream = el.srcObject;\n if (!(mediaStream instanceof this._MediaStream)) {\n mediaStream = new this._MediaStream();\n }\n var getTracks = mediaStreamTrack.kind === 'audio'\n ? 'getAudioTracks'\n : 'getVideoTracks';\n mediaStream[getTracks]().forEach(function (track) {\n mediaStream.removeTrack(track);\n });\n mediaStream.addTrack(mediaStreamTrack);\n // NOTE(mpatwardhan): resetting `srcObject` here, causes flicker (JSDK-2641), but it lets us\n // to sidestep the a chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1052353\n //\n el.srcObject = mediaStream;\n el.autoplay = true;\n el.playsInline = true;\n if (!this._attachments.has(el)) {\n this._attachments.add(el);\n }\n return el;\n };\n /**\n * @private\n */\n MediaTrack.prototype._selectElement = function (selector) {\n var el = document.querySelector(selector);\n if (!el) {\n throw new Error(\"Selector matched no element: \" + selector);\n }\n return el;\n };\n /**\n * @private\n */\n MediaTrack.prototype._updateElementsMediaStreamTrack = function () {\n var _this = this;\n this._log.debug('Reattaching all elements to update mediaStreamTrack');\n this._getAllAttachedElements().forEach(function (el) { return _this._attach(el); });\n };\n /**\n * @private\n */\n MediaTrack.prototype._createElement = function () {\n return typeof document !== 'undefined'\n ? document.createElement(this.kind)\n : null;\n };\n MediaTrack.prototype.detach = function (el) {\n var els;\n if (typeof el === 'string') {\n els = [this._selectElement(el)];\n }\n else if (!el) {\n els = this._getAllAttachedElements();\n }\n else {\n els = [el];\n }\n this._log.debug('Attempting to detach from elements:', els);\n this._detachElements(els);\n return el ? els[0] : els;\n };\n /**\n * @private\n */\n MediaTrack.prototype._detachElements = function (elements) {\n return elements.map(this._detachElement.bind(this));\n };\n /**\n * @private\n */\n MediaTrack.prototype._detachElement = function (el) {\n if (!this._attachments.has(el)) {\n return el;\n }\n var mediaStream = el.srcObject;\n if (mediaStream instanceof this._MediaStream) {\n mediaStream.removeTrack(this.processedTrack || this.mediaStreamTrack);\n }\n this._attachments.delete(el);\n if (this._shouldShimAttachedElements && this._elShims.has(el)) {\n var shim = this._elShims.get(el);\n shim.unShim();\n this._elShims.delete(el);\n }\n return el;\n };\n /**\n * @private\n */\n MediaTrack.prototype._getAllAttachedElements = function () {\n var els = [];\n this._attachments.forEach(function (el) {\n els.push(el);\n });\n return els;\n };\n return MediaTrack;\n}(Track));\n/**\n * Play an HTMLMediaElement if it is paused and not backgrounded.\n * @private\n * @param {HTMLMediaElement} el\n * @param {Log} log\n * @returns {void}\n */\nfunction playIfPausedAndNotBackgrounded(el, log) {\n var tag = el.tagName.toLowerCase();\n log.warn('Unintentionally paused:', el);\n // NOTE(mmalavalli): When the element is unintentionally paused, we wait one\n // second for the \"onvisibilitychange\" event on the HTMLDocument to see if the\n // app will be backgrounded. If not, then the element can be safely played.\n Promise.race([\n waitForEvent(document, 'visibilitychange'),\n waitForSometime(1000)\n ]).then(function () {\n if (document.visibilityState === 'visible') {\n // NOTE(mmalavalli): We play the inadvertently paused elements only after\n // the LocalAudioTrack is unmuted to work around WebKit Bug 213853.\n //\n // Bug: https://bugs.webkit.org/show_bug.cgi?id=213853\n //\n localMediaRestartDeferreds.whenResolved('audio').then(function () {\n log.info(\"Playing unintentionally paused <\" + tag + \"> element\");\n log.debug('Element:', el);\n return el.play();\n }).then(function () {\n log.info(\"Successfully played unintentionally paused <\" + tag + \"> element\");\n log.debug('Element:', el);\n }).catch(function (error) {\n log.warn(\"Error while playing unintentionally paused <\" + tag + \"> element:\", { error: error, el: el });\n });\n }\n });\n}\n/**\n * Shim the pause() and play() methods of the given HTMLMediaElement so that\n * we can detect if it was paused unintentionally.\n * @param {HTMLMediaElement} el\n * @param {?function} [onUnintentionallyPaused=null]\n * @returns {{pausedIntentionally: function, unShim: function}}\n */\nfunction shimMediaElement(el, onUnintentionallyPaused) {\n if (onUnintentionallyPaused === void 0) { onUnintentionallyPaused = null; }\n var origPause = el.pause;\n var origPlay = el.play;\n var pausedIntentionally = false;\n el.pause = function () {\n pausedIntentionally = true;\n return origPause.call(el);\n };\n el.play = function () {\n pausedIntentionally = false;\n return origPlay.call(el);\n };\n var onPause = onUnintentionallyPaused ? function () {\n if (!pausedIntentionally) {\n onUnintentionallyPaused();\n }\n } : null;\n if (onPause) {\n el.addEventListener('pause', onPause);\n }\n return {\n pausedIntentionally: function () {\n return pausedIntentionally;\n },\n unShim: function () {\n el.pause = origPause;\n el.play = origPlay;\n if (onPause) {\n el.removeEventListener('pause', onPause);\n }\n }\n };\n}\nmodule.exports = MediaTrack;\n//# sourceMappingURL=mediatrack.js.map","'use strict';\nvar defer = require('./').defer;\n/**\n * This is a pair of Deferreds that are set whenever local media is muted and\n * resolved whenever local media is unmuted/ended and restarted if necessary.\n */\nvar LocalMediaRestartDeferreds = /** @class */ (function () {\n /**\n * Constructor.\n */\n function LocalMediaRestartDeferreds() {\n Object.defineProperties(this, {\n _audio: {\n value: defer(),\n writable: true\n },\n _video: {\n value: defer(),\n writable: true\n }\n });\n // Initially, resolve both the Deferreds.\n this._audio.resolve();\n this._video.resolve();\n }\n /**\n * Resolve the Deferred for audio or video.\n * @param {'audio'|'video'} kind\n */\n LocalMediaRestartDeferreds.prototype.resolveDeferred = function (kind) {\n if (kind === 'audio') {\n this._audio.resolve();\n }\n else {\n this._video.resolve();\n }\n };\n /**\n * Start the Deferred for audio or video.\n * @param {'audio' | 'video'} kind\n */\n LocalMediaRestartDeferreds.prototype.startDeferred = function (kind) {\n if (kind === 'audio') {\n this._audio = defer();\n }\n else {\n this._video = defer();\n }\n };\n /**\n * Wait until the Deferred for audio or video is resolved.\n * @param {'audio'|'video'} kind\n * @returns {Promise}\n */\n LocalMediaRestartDeferreds.prototype.whenResolved = function (kind) {\n return kind === 'audio' ? this._audio.promise : this._video.promise;\n };\n return LocalMediaRestartDeferreds;\n}());\nmodule.exports = new LocalMediaRestartDeferreds();\n//# sourceMappingURL=localmediarestartdeferreds.js.map","/* eslint new-cap:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar getUserMedia = require('../../webrtc').getUserMedia;\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar _a = require('../../util'), capitalize = _a.capitalize, defer = _a.defer, waitForSometime = _a.waitForSometime, waitForEvent = _a.waitForEvent;\nvar ILLEGAL_INVOKE = require('../../util/constants').typeErrors.ILLEGAL_INVOKE;\nvar detectSilentAudio = require('../../util/detectsilentaudio');\nvar detectSilentVideo = require('../../util/detectsilentvideo');\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nvar localMediaRestartDeferreds = require('../../util/localmediarestartdeferreds');\nvar gUMSilentTrackWorkaround = require('../../webaudio/workaround180748');\nvar MediaTrackSender = require('./sender');\nfunction mixinLocalMediaTrack(AudioOrVideoTrack) {\n /**\n * A {@link LocalMediaTrack} represents audio or video that your\n * {@link LocalParticipant} is sending to a {@link Room}. As such, it can be\n * enabled and disabled with {@link LocalMediaTrack#enable} and\n * {@link LocalMediaTrack#disable} or stopped completely with\n * {@link LocalMediaTrack#stop}.\n * @emits LocalMediaTrack#muted\n * @emits LocalMediaTrack#stopped\n * @emits LocalMediaTrack#unmuted\n */\n return /** @class */ (function (_super) {\n __extends(LocalMediaTrack, _super);\n /**\n * Construct a {@link LocalMediaTrack} from a MediaStreamTrack.\n * @param {MediaStreamTrack} mediaStreamTrack - The underlying MediaStreamTrack\n * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n */\n function LocalMediaTrack(mediaStreamTrack, options) {\n var _this = this;\n var workaroundWebKitBug1208516 = isIOS()\n && typeof document === 'object'\n && typeof document.addEventListener === 'function'\n && typeof document.visibilityState === 'string';\n options = Object.assign({\n getUserMedia: getUserMedia,\n isCreatedByCreateLocalTracks: false,\n workaroundWebKitBug1208516: workaroundWebKitBug1208516,\n gUMSilentTrackWorkaround: gUMSilentTrackWorkaround\n }, options);\n var mediaTrackSender = new MediaTrackSender(mediaStreamTrack);\n var kind = mediaTrackSender.kind;\n _this = _super.call(this, mediaTrackSender, options) || this;\n Object.defineProperties(_this, {\n _constraints: {\n value: typeof options[kind] === 'object'\n ? options[kind]\n : {},\n writable: true\n },\n _getUserMedia: {\n value: options.getUserMedia\n },\n _gUMSilentTrackWorkaround: {\n value: options.gUMSilentTrackWorkaround\n },\n _eventsToReemitters: {\n value: new Map([\n ['muted', function () { return _this.emit('muted', _this); }],\n ['unmuted', function () { return _this.emit('unmuted', _this); }]\n ])\n },\n _workaroundWebKitBug1208516: {\n value: options.workaroundWebKitBug1208516\n },\n _workaroundWebKitBug1208516Cleanup: {\n value: null,\n writable: true\n },\n _didCallEnd: {\n value: false,\n writable: true\n },\n _isCreatedByCreateLocalTracks: {\n value: options.isCreatedByCreateLocalTracks\n },\n _noiseCancellation: {\n value: options.noiseCancellation || null\n },\n _trackSender: {\n value: mediaTrackSender\n },\n id: {\n enumerable: true,\n value: mediaTrackSender.id\n },\n isEnabled: {\n enumerable: true,\n get: function () {\n return mediaTrackSender.enabled;\n }\n },\n isMuted: {\n enumerable: true,\n get: function () {\n return mediaTrackSender.muted;\n }\n },\n isStopped: {\n enumerable: true,\n get: function () {\n return mediaTrackSender.readyState === 'ended';\n }\n }\n });\n // NOTE(mpatwardhan): As a workaround for WebKit bug: https://bugs.webkit.org/show_bug.cgi?id=208516,\n // upon foregrounding, re-acquire new MediaStreamTrack if the existing one is ended or muted.\n if (_this._workaroundWebKitBug1208516) {\n _this._workaroundWebKitBug1208516Cleanup = restartWhenInadvertentlyStopped(_this);\n }\n _this._reemitTrackSenderEvents();\n return _this;\n }\n /**\n * @private\n */\n LocalMediaTrack.prototype._end = function () {\n var _this = this;\n if (this._didCallEnd) {\n return;\n }\n _super.prototype._end.call(this);\n this._didCallEnd = true;\n this._eventsToReemitters.forEach(function (reemitter, event) { return _this._trackSender.removeListener(event, reemitter); });\n this.emit('stopped', this);\n };\n /**\n * @private\n */\n LocalMediaTrack.prototype._initialize = function () {\n if (this._didCallEnd) {\n this._didCallEnd = false;\n }\n if (this._eventsToReemitters) {\n this._reemitTrackSenderEvents();\n }\n _super.prototype._initialize.call(this);\n };\n /**\n * @private\n */\n LocalMediaTrack.prototype._reacquireTrack = function (constraints) {\n var _a;\n var _b = this, getUserMedia = _b._getUserMedia, gUMSilentTrackWorkaround = _b._gUMSilentTrackWorkaround, log = _b._log, kind = _b.mediaStreamTrack.kind;\n log.info('Re-acquiring the MediaStreamTrack');\n log.debug('Constraints:', constraints);\n var gUMConstraints = Object.assign({\n audio: false,\n video: false\n }, (_a = {}, _a[kind] = constraints, _a));\n var gUMPromise = this._workaroundWebKitBug1208516Cleanup\n ? gUMSilentTrackWorkaround(log, getUserMedia, gUMConstraints)\n : getUserMedia(gUMConstraints);\n return gUMPromise.then(function (mediaStream) {\n return mediaStream.getTracks()[0];\n });\n };\n /**\n * @private\n */\n LocalMediaTrack.prototype._reemitTrackSenderEvents = function () {\n var _this = this;\n this._eventsToReemitters.forEach(function (reemitter, event) { return _this._trackSender.on(event, reemitter); });\n this._trackSender.dequeue('muted');\n this._trackSender.dequeue('unmuted');\n };\n /**\n * @private\n */\n LocalMediaTrack.prototype._restart = function (constraints) {\n var _this = this;\n var log = this._log;\n constraints = constraints || this._constraints;\n // NOTE(mmalavalli): If we try and restart a silent MediaStreamTrack\n // without stopping it first, then a NotReadableError is raised in case of\n // video, or the restarted audio will still be silent. Hence, we stop the\n // MediaStreamTrack here.\n this._stop();\n return this._reacquireTrack(constraints).catch(function (error) {\n log.error('Failed to re-acquire the MediaStreamTrack:', { error: error, constraints: constraints });\n throw error;\n }).then(function (newMediaStreamTrack) {\n log.info('Re-acquired the MediaStreamTrack');\n log.debug('MediaStreamTrack:', newMediaStreamTrack);\n _this._constraints = Object.assign({}, constraints);\n return _this._setMediaStreamTrack(newMediaStreamTrack);\n });\n };\n /**\n * @private\n */\n LocalMediaTrack.prototype._setMediaStreamTrack = function (mediaStreamTrack) {\n var _this = this;\n // NOTE(mpatwardhan): Preserve the value of the \"enabled\" flag.\n mediaStreamTrack.enabled = this.mediaStreamTrack.enabled;\n // NOTE(mmalavalli): Stop the current MediaStreamTrack. If not already\n // stopped, this should fire a \"stopped\" event.\n this._stop();\n // NOTE(csantos): If there's an unprocessedTrack, this means RTCRtpSender has\n // the processedTrack already set, we don't want to replace that.\n return (this._unprocessedTrack ? Promise.resolve().then(function () {\n _this._unprocessedTrack = mediaStreamTrack;\n }) : this._trackSender.setMediaStreamTrack(mediaStreamTrack).catch(function (error) {\n _this._log.warn('setMediaStreamTrack failed:', { error: error, mediaStreamTrack: mediaStreamTrack });\n })).then(function () {\n _this._initialize();\n _this._getAllAttachedElements().forEach(function (el) { return _this._attach(el); });\n });\n };\n /**\n * @private\n */\n LocalMediaTrack.prototype._stop = function () {\n this.mediaStreamTrack.stop();\n this._end();\n return this;\n };\n LocalMediaTrack.prototype.enable = function (enabled) {\n enabled = typeof enabled === 'boolean' ? enabled : true;\n if (enabled !== this.mediaStreamTrack.enabled) {\n this._log.info((enabled ? 'En' : 'Dis') + \"abling\");\n this.mediaStreamTrack.enabled = enabled;\n this.emit(enabled ? 'enabled' : 'disabled', this);\n }\n return this;\n };\n LocalMediaTrack.prototype.disable = function () {\n return this.enable(false);\n };\n LocalMediaTrack.prototype.restart = function (constraints) {\n var _this = this;\n var kind = this.kind;\n if (!this._isCreatedByCreateLocalTracks) {\n return Promise.reject(ILLEGAL_INVOKE('restart', 'can only be called on a'\n + (\" Local\" + capitalize(kind) + \"Track that is created using createLocalTracks\")\n + (\" or createLocal\" + capitalize(kind) + \"Track.\")));\n }\n if (this._workaroundWebKitBug1208516Cleanup) {\n this._workaroundWebKitBug1208516Cleanup();\n this._workaroundWebKitBug1208516Cleanup = null;\n }\n var promise = this._restart(constraints);\n if (this._workaroundWebKitBug1208516) {\n promise = promise.finally(function () {\n _this._workaroundWebKitBug1208516Cleanup = restartWhenInadvertentlyStopped(_this);\n });\n }\n return promise;\n };\n LocalMediaTrack.prototype.stop = function () {\n this._log.info('Stopping');\n if (this._workaroundWebKitBug1208516Cleanup) {\n this._workaroundWebKitBug1208516Cleanup();\n this._workaroundWebKitBug1208516Cleanup = null;\n }\n return this._stop();\n };\n return LocalMediaTrack;\n }(AudioOrVideoTrack));\n}\n/**\n * Restart the given {@link LocalMediaTrack} if it has been inadvertently stopped.\n * @private\n * @param {LocalAudioTrack|LocalVideoTrack} localMediaTrack\n * @returns {function} Clean up listeners attached by the workaround\n */\nfunction restartWhenInadvertentlyStopped(localMediaTrack) {\n var log = localMediaTrack._log, kind = localMediaTrack.kind, noiseCancellation = localMediaTrack._noiseCancellation;\n var detectSilence = {\n audio: detectSilentAudio,\n video: detectSilentVideo\n }[kind];\n var getSourceMediaStreamTrack = function () { return noiseCancellation\n ? noiseCancellation.sourceTrack\n : localMediaTrack.mediaStreamTrack; };\n var el = localMediaTrack._dummyEl;\n var mediaStreamTrack = getSourceMediaStreamTrack();\n var trackChangeInProgress = null;\n function checkSilence() {\n // The dummy element is paused, so play it and then detect silence.\n return el.play().then(function () { return detectSilence(el); }).then(function (isSilent) {\n if (isSilent) {\n log.warn('Silence detected');\n }\n else {\n log.info('Non-silence detected');\n }\n return isSilent;\n }).catch(function (error) {\n log.warn('Failed to detect silence:', error);\n }).finally(function () {\n // Pause the dummy element again, if there is no processed track.\n if (!localMediaTrack.processedTrack) {\n el.pause();\n }\n });\n }\n function shouldReacquireTrack() {\n var _workaroundWebKitBug1208516Cleanup = localMediaTrack._workaroundWebKitBug1208516Cleanup, isStopped = localMediaTrack.isStopped;\n var isInadvertentlyStopped = isStopped && !!_workaroundWebKitBug1208516Cleanup;\n var muted = getSourceMediaStreamTrack().muted;\n // NOTE(mmalavalli): Restart the LocalMediaTrack if:\n // 1. The app is foregrounded, and\n // 2. A restart is not already in progress, and\n // 3. The LocalMediaTrack is either muted, inadvertently stopped or silent\n return Promise.resolve().then(function () {\n return document.visibilityState === 'visible'\n && !trackChangeInProgress\n && (muted || isInadvertentlyStopped || checkSilence());\n });\n }\n function maybeRestart() {\n return Promise.race([\n waitForEvent(mediaStreamTrack, 'unmute'),\n waitForSometime(50)\n ]).then(function () { return shouldReacquireTrack(); }).then(function (shouldReacquire) {\n if (shouldReacquire && !trackChangeInProgress) {\n trackChangeInProgress = defer();\n localMediaTrack._restart().finally(function () {\n el = localMediaTrack._dummyEl;\n removeMediaStreamTrackListeners();\n mediaStreamTrack = getSourceMediaStreamTrack();\n addMediaStreamTrackListeners();\n trackChangeInProgress.resolve();\n trackChangeInProgress = null;\n }).catch(function (error) {\n log.error('failed to restart track: ', error);\n });\n }\n // NOTE(mmalavalli): If the MediaStreamTrack ends before the DOM is visible,\n // then this makes sure that visibility callback for phase 2 is called only\n // after the MediaStreamTrack is re-acquired.\n var promise = (trackChangeInProgress && trackChangeInProgress.promise) || Promise.resolve();\n return promise.finally(function () { return localMediaRestartDeferreds.resolveDeferred(kind); });\n }).catch(function (ex) {\n log.error(\"error in maybeRestart: \" + ex.message);\n });\n }\n function onMute() {\n var log = localMediaTrack._log, kind = localMediaTrack.kind;\n log.info('Muted');\n log.debug('LocalMediaTrack:', localMediaTrack);\n // NOTE(mmalavalli): When a LocalMediaTrack is muted without the app being\n // backgrounded, and the inadvertently paused elements are played before it\n // is restarted, it never gets unmuted due to the WebKit Bug 213853. Hence,\n // setting this Deferred will make sure that the inadvertently paused elements\n // are played only after the LocalMediaTrack is unmuted.\n //\n // Bug: https://bugs.webkit.org/show_bug.cgi?id=213853\n //\n localMediaRestartDeferreds.startDeferred(kind);\n }\n function addMediaStreamTrackListeners() {\n mediaStreamTrack.addEventListener('ended', maybeRestart);\n mediaStreamTrack.addEventListener('mute', onMute);\n mediaStreamTrack.addEventListener('unmute', maybeRestart);\n }\n function removeMediaStreamTrackListeners() {\n mediaStreamTrack.removeEventListener('ended', maybeRestart);\n mediaStreamTrack.removeEventListener('mute', onMute);\n mediaStreamTrack.removeEventListener('unmute', maybeRestart);\n }\n // NOTE(mpatwardhan): listen for document visibility callback on phase 1.\n // this ensures that we acquire media tracks before RemoteMediaTrack\n // tries to `play` them (in phase 2). This order is important because\n // play can fail on safari if audio is not being captured.\n var onVisibilityChange = function (isVisible) {\n return isVisible ? maybeRestart() : false;\n };\n documentVisibilityMonitor.onVisibilityChange(1, onVisibilityChange);\n addMediaStreamTrackListeners();\n return function () {\n documentVisibilityMonitor.offVisibilityChange(1, onVisibilityChange);\n removeMediaStreamTrackListeners();\n };\n}\nmodule.exports = mixinLocalMediaTrack;\n//# sourceMappingURL=localmediatrack.js.map","'use strict';\n// Cached copy of the used to check silent video frames.\nvar canvas = null;\nvar N_SAMPLES = 3;\nvar SAMPLE_HEIGHT = 50;\nvar SAMPLE_INTERVAL_MS = 250;\nvar SAMPLE_WIDTH = 50;\n/**\n * Check whether the current video frame is silent by selecting a 50x50\n * sample and calculating the max value of the pixel data. If it is 0, then\n * the frame is considered to be silent.\n * @private\n * @param {HTMLVideoElement} el\n * @returns {boolean} true if silent, false if not\n */\nfunction checkSilence(el) {\n try {\n var context = canvas.getContext('2d');\n context.drawImage(el, 0, 0, SAMPLE_WIDTH, SAMPLE_HEIGHT);\n var frame = context.getImageData(0, 0, SAMPLE_WIDTH, SAMPLE_HEIGHT);\n var frameDataWithoutAlpha = frame.data.filter(function (item, i) { return (i + 1) % 4; });\n var max = Math.max.apply(Math, frameDataWithoutAlpha);\n return max === 0;\n }\n catch (ex) {\n // eslint-disable-next-line no-console\n console.log('Error checking silence: ', ex);\n return false;\n }\n}\n/**\n * Detect whether the video stream rendered by the given HTMLVideoElement is silent.\n * @param {HTMLVideoElement} el\n * @returns {Promise} true if silent, false if not.\n */\nfunction detectSilentVideo(el) {\n // Create the canvas when detectSilentVideo() is called for the\n // first time.\n canvas = canvas || document.createElement('canvas');\n // Resolve the returned Promise with true if 3 consecutive sample\n // frames from the video being played by the HTMLVideoElement are\n // silent.\n return new Promise(function (resolve) {\n var samplesLeft = N_SAMPLES;\n setTimeout(function doCheckSilence() {\n samplesLeft--;\n if (!checkSilence(el)) {\n return resolve(false);\n }\n if (samplesLeft > 0) {\n return setTimeout(doCheckSilence, SAMPLE_INTERVAL_MS);\n }\n return resolve(true);\n }, SAMPLE_INTERVAL_MS);\n });\n}\nmodule.exports = detectSilentVideo;\n//# sourceMappingURL=detectsilentvideo.js.map","'use strict';\nvar detectSilence = require('./detectsilence');\n/**\n * This function attempts to workaround WebKit Bug 180748. It does so by\n *\n * 1. Calling `getUserMedia`, and\n * 2. Checking to see if the resulting MediaStream is silent.\n * 3. If so, repeat Step 1; otherwise, return the MediaStream.\n *\n * The function only repeats up to `n` times, and it only waits `timeout`\n * milliseconds when detecting silence. Assuming `getUserMedia` is\n * instantaneous, in the best case, this function returns a Promise that\n * resolves immediately; in the worst case, this function returns a Promise that\n * resolves in `n` * `timeout` milliseconds.\n *\n * @param {Log} log\n * @param {function(MediaStreamConstraints): Promise} getUserMedia\n * @param {MediaStreamConstraints} constraints\n * @param {number} [n=3]\n * @param {number} [timeout=250]\n * @returns Promise\n */\nfunction workaround(log, getUserMedia, constraints, n, timeout) {\n n = typeof n === 'number' ? n : 3;\n var retry = 0;\n // NOTE(mroberts): We have to delay require-ing AudioContextFactory, because\n // it exports a default instance whose constructor calls Object.assign.\n var AudioContextFactory = require('./audiocontext');\n var holder = {};\n var audioContext = AudioContextFactory.getOrCreate(holder);\n /**\n * We can't use async/await yet, so I need to factor this out.\n * @returns {Promise}\n */\n function doWorkaround() {\n return getUserMedia(constraints).then(function (stream) {\n var isSilentPromise = constraints.audio\n ? detectSilence(audioContext, stream, timeout).catch(function (err) {\n log.warn('Encountered an error while detecting silence', err);\n return true;\n })\n : Promise.resolve(false);\n return isSilentPromise.then(function (isSilent) {\n if (!isSilent) {\n log.info('Got a non-silent audio MediaStreamTrack; returning it.');\n return stream;\n }\n else if (n <= 0) {\n log.warn('Got a silent audio MediaStreamTrack. Normally we would try \\\nto get a new one, but we\\'ve run out of retries; returning it anyway.');\n return stream;\n }\n log.warn(\"Got a silent audio MediaStreamTrack. Stopping all MediaStreamTracks and calling getUserMedia again. This is retry #\" + ++retry + \".\");\n stream.getTracks().forEach(function (track) { return track.stop(); });\n n--;\n return doWorkaround();\n });\n });\n }\n return doWorkaround().then(function (stream) {\n AudioContextFactory.release(holder);\n return stream;\n }, function (error) {\n AudioContextFactory.release(holder);\n throw error;\n });\n}\nmodule.exports = workaround;\n//# sourceMappingURL=workaround180748.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar MediaTrackTransceiver = require('./transceiver');\n/**\n * A {@link MediaTrackSender} represents one or more local RTCRtpSenders.\n * @extends MediaTrackTransceiver\n * @emits MediaTrackSender#replaced\n */\nvar MediaTrackSender = /** @class */ (function (_super) {\n __extends(MediaTrackSender, _super);\n /**\n * Construct a {@link MediaTrackSender}.\n * @param {MediaStreamTrack} mediaStreamTrack\n */\n function MediaTrackSender(mediaStreamTrack) {\n var _this = _super.call(this, mediaStreamTrack.id, mediaStreamTrack) || this;\n Object.defineProperties(_this, {\n _clones: {\n value: new Set()\n },\n _eventsToReemitters: {\n value: new Map([\n ['mute', function () { return _this.queue('muted'); }],\n ['unmute', function () { return _this.queue('unmuted'); }]\n ])\n },\n _senders: {\n value: new Set()\n },\n _senderToPublisherHintCallbacks: {\n value: new Map()\n },\n isPublishing: {\n enumerable: true,\n get: function () {\n return !!this._clones.size;\n }\n },\n muted: {\n enumerable: true,\n get: function () {\n return this._track.muted;\n }\n }\n });\n _this._reemitMediaStreamTrackEvents();\n return _this;\n }\n /**\n * @private\n */\n MediaTrackSender.prototype._reemitMediaStreamTrackEvents = function (mediaStreamTrack) {\n if (mediaStreamTrack === void 0) { mediaStreamTrack = this._track; }\n var _a = this, eventsToReemitters = _a._eventsToReemitters, track = _a._track;\n eventsToReemitters.forEach(function (reemitter, event) { return mediaStreamTrack.addEventListener(event, reemitter); });\n if (track !== mediaStreamTrack) {\n eventsToReemitters.forEach(function (reemitter, event) { return track.removeEventListener(event, reemitter); });\n if (track.muted !== mediaStreamTrack.muted) {\n var reemitter = eventsToReemitters.get(mediaStreamTrack.muted ? 'mute' : 'unmute');\n reemitter();\n }\n }\n };\n /**\n * Return a new {@link MediaTrackSender} containing a clone of the underlying\n * MediaStreamTrack. No RTCRtpSenders are copied.\n * @returns {MediaTrackSender}\n */\n MediaTrackSender.prototype.clone = function () {\n var clone = new MediaTrackSender(this.track.clone());\n this._clones.add(clone);\n return clone;\n };\n /**\n * Remove a cloned {@link MediaTrackSender}.\n * @returns {void}\n */\n MediaTrackSender.prototype.removeClone = function (clone) {\n this._clones.delete(clone);\n };\n /**\n * Set the given MediaStreamTrack.\n * @param {MediaStreamTrack} mediaStreamTrack\n * @returns {Promise}\n */\n MediaTrackSender.prototype.setMediaStreamTrack = function (mediaStreamTrack) {\n var _this = this;\n var clones = Array.from(this._clones);\n var senders = Array.from(this._senders);\n return Promise.all(clones.map(function (clone) {\n return clone.setMediaStreamTrack(mediaStreamTrack.clone());\n }).concat(senders.map(function (sender) {\n return _this._replaceTrack(sender, mediaStreamTrack);\n }))).finally(function () {\n _this._reemitMediaStreamTrackEvents(mediaStreamTrack);\n _this._track = mediaStreamTrack;\n });\n };\n /**\n * Add an RTCRtpSender.\n * @param {RTCRtpSender} sender\n * @param {?()=>Promise} publisherHintCallback\n * @returns {this}\n */\n MediaTrackSender.prototype.addSender = function (sender, publisherHintCallback) {\n this._senders.add(sender);\n if (publisherHintCallback) {\n this._senderToPublisherHintCallbacks.set(sender, publisherHintCallback);\n }\n return this;\n };\n /**\n * Remove an RTCRtpSender.\n * @param {RTCRtpSender} sender\n * @returns {this}\n */\n MediaTrackSender.prototype.removeSender = function (sender) {\n this._senders.delete(sender);\n this._senderToPublisherHintCallbacks.delete(sender);\n return this;\n };\n /**\n * Applies given encodings, or resets encodings if none specified.\n * @param {Array<{enabled: boolean, layer_index: number}>|null} encodings\n * @returns {Promise}\n */\n MediaTrackSender.prototype.setPublisherHint = function (encodings) {\n // Note(mpatwardhan): since publisher hint applies only to group rooms we only look at 1st call callback.\n var _a = __read(Array.from(this._senderToPublisherHintCallbacks.values()), 1), publisherHintCallback = _a[0];\n return publisherHintCallback ? publisherHintCallback(encodings) : Promise.resolve('COULD_NOT_APPLY_HINT');\n };\n MediaTrackSender.prototype._replaceTrack = function (sender, mediaStreamTrack) {\n var _this = this;\n return sender.replaceTrack(mediaStreamTrack).then(function (replaceTrackResult) {\n // clear any publisherHints and apply default encodings.\n _this.setPublisherHint(null).catch(function () { });\n _this.emit('replaced');\n return replaceTrackResult;\n });\n };\n return MediaTrackSender;\n}(MediaTrackTransceiver));\n/**\n * The {@link MediaTrackSender}'s underlying MediaStreamTrack was muted.\n * @event MediaTrackSender#muted\n */\n/**\n * The {@link MediaTrackSender} replaced the underlying MediaStreamTrack.\n * @event MediaTrackSender#replaced\n */\n/**\n * The {@link MediaTrackSender}'s underlying MediaStreamTrack was unmuted.\n * @event MediaTrackSender#unmuted\n */\nmodule.exports = MediaTrackSender;\n//# sourceMappingURL=sender.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TrackTransceiver = require('../../transceiver');\n/**\n * A {@link MediaTrackTransceiver} represents either one or more local\n * RTCRtpSenders, or a single RTCRtpReceiver.\n * @extends TrackTransceiver\n * @property {MediaStreamTrack} track\n */\nvar MediaTrackTransceiver = /** @class */ (function (_super) {\n __extends(MediaTrackTransceiver, _super);\n /**\n * Construct a {@link MediaTrackTransceiver}.\n * @param {Track.ID} id - The MediaStreamTrack ID signaled through RSP/SDP\n * @param {MediaStreamTrack} mediaStreamTrack\n */\n function MediaTrackTransceiver(id, mediaStreamTrack) {\n var _this = _super.call(this, id, mediaStreamTrack.kind) || this;\n Object.defineProperties(_this, {\n _track: {\n value: mediaStreamTrack,\n writable: true\n },\n enabled: {\n enumerable: true,\n get: function () {\n return this._track.enabled;\n }\n },\n readyState: {\n enumerable: true,\n get: function () {\n return this._track.readyState;\n }\n },\n track: {\n enumerable: true,\n get: function () {\n return this._track;\n }\n }\n });\n return _this;\n }\n MediaTrackTransceiver.prototype.stop = function () {\n this.track.stop();\n _super.prototype.stop.call(this);\n };\n return MediaTrackTransceiver;\n}(TrackTransceiver));\nmodule.exports = MediaTrackTransceiver;\n//# sourceMappingURL=transceiver.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar QueueingEventEmitter = require('./queueingeventemitter');\n/**\n * A {@link TrackTransceiver} represents either one or more local RTCRtpSenders\n * or RTCDataChannels, or a single RTCRtpReceiver or remote RTCDataChannel.\n * @extends QueueingEventEmitter\n * @property {Track.ID} id\n * @property {Track.kind} kind\n */\nvar TrackTransceiver = /** @class */ (function (_super) {\n __extends(TrackTransceiver, _super);\n /**\n * Construct a {@link TrackTransceiver}.\n * @param {Track.ID} id\n * @param {Track.kind} kind\n */\n function TrackTransceiver(id, kind) {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n id: {\n enumerable: true,\n value: id\n },\n kind: {\n enumerable: true,\n value: kind\n }\n });\n return _this;\n }\n /**\n * Stop the {@link TrackTransceiver}.\n * #emits TrackTransceiver#stopped\n * @returns {void}\n */\n TrackTransceiver.prototype.stop = function () {\n this.emit('stopped');\n };\n return TrackTransceiver;\n}(QueueingEventEmitter));\n/**\n * The {@link TrackTransceiver} was stopped.\n * @event TrackTransceiver#stopped\n */\nmodule.exports = TrackTransceiver;\n//# sourceMappingURL=transceiver.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar EventEmitter = require('events').EventEmitter;\n/**\n * A {@link QueueingEventEmitter} can queue events until a listener has been\n * added.\n * @extends EventEmitter\n */\nvar QueueingEventEmitter = /** @class */ (function (_super) {\n __extends(QueueingEventEmitter, _super);\n /**\n * Construct a {@link QueueingEventEmitter}\n */\n function QueueingEventEmitter() {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _queuedEvents: {\n value: new Map()\n }\n });\n return _this;\n }\n /**\n * Emit any queued events.\n * @returns {boolean} true if every event had listeners, false otherwise\n */ /**\n * Emit any queued events matching the event name.\n * @param {string} event\n * @returns {boolean} true if every event had listeners, false otherwise\n */\n QueueingEventEmitter.prototype.dequeue = function (event) {\n var _this = this;\n var result = true;\n if (!event) {\n this._queuedEvents.forEach(function (_, queuedEvent) {\n result = this.dequeue(queuedEvent) && result;\n }, this);\n return result;\n }\n var queue = this._queuedEvents.get(event) || [];\n this._queuedEvents.delete(event);\n return queue.reduce(function (result, args) { return _this.emit.apply(_this, __spreadArray([], __read([event].concat(args)))) && result; }, result);\n };\n /**\n * If the event has listeners, emit the event; otherwise, queue the event.\n * @param {string} event\n * @param {...*} args\n * @returns {boolean} true if the event had listeners, false if the event was queued\n */\n QueueingEventEmitter.prototype.queue = function () {\n var args = [].slice.call(arguments);\n if (this.emit.apply(this, __spreadArray([], __read(args)))) {\n return true;\n }\n var event = args[0];\n if (!this._queuedEvents.has(event)) {\n this._queuedEvents.set(event, []);\n }\n this._queuedEvents.get(event).push(args.slice(1));\n return false;\n };\n return QueueingEventEmitter;\n}(EventEmitter));\nmodule.exports = QueueingEventEmitter;\n//# sourceMappingURL=queueingeventemitter.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaTrack = require('./mediatrack');\nvar VideoProcessorEventObserver = require('./videoprocessoreventobserver');\nvar DEFAULT_FRAME_RATE = require('../../util/constants').DEFAULT_FRAME_RATE;\n/**\n * A {@link VideoTrack} is a {@link Track} representing video.\n * @extends Track\n * @property {boolean} isStarted - Whether or not the {@link VideoTrack} has\n * started; if the {@link VideoTrack} started, there is enough video data to\n * begin playback\n * @property {boolean} isEnabled - Whether or not the {@link VideoTrack} is\n * enabled; if the {@link VideoTrack} is not enabled, it is \"paused\"\n * @property {VideoTrack.Dimensions} dimensions - The {@link VideoTrack}'s\n * {@link VideoTrack.Dimensions}\n * @property {Track.Kind} kind - \"video\"\n * @property {MediaStreamTrack} mediaStreamTrack - A video MediaStreamTrack\n * @property {?MediaStreamTrack} processedTrack - The source of processed video frames.\n * It is null if no VideoProcessor has been added.\n * @property {?VideoProcessor} processor - A {@link VideoProcessor} that is currently\n * processing video frames. It is null if video frames are not being processed.\n * @emits VideoTrack#dimensionsChanged\n * @emits VideoTrack#disabled\n * @emits VideoTrack#enabled\n * @emits VideoTrack#started\n */\nvar VideoTrack = /** @class */ (function (_super) {\n __extends(VideoTrack, _super);\n /**\n * Construct a {@link VideoTrack}.\n * @param {MediaTrackTransceiver} mediaTrackTransceiver\n * @param {{log: Log}} options\n */\n function VideoTrack(mediaTrackTransceiver, options) {\n var _this = _super.call(this, mediaTrackTransceiver, options) || this;\n Object.defineProperties(_this, {\n _captureTimeoutId: {\n value: null,\n writable: true\n },\n _isCapturing: {\n value: false,\n writable: true\n },\n _inputFrame: {\n value: null,\n writable: true\n },\n _outputFrame: {\n value: null,\n writable: true\n },\n _processorEventObserver: {\n value: null,\n writable: true,\n },\n _processorOptions: {\n value: {},\n writable: true,\n },\n _unmuteHandler: {\n value: null,\n writable: true\n },\n dimensions: {\n enumerable: true,\n value: {\n width: null,\n height: null\n }\n },\n processor: {\n enumerable: true,\n value: null,\n writable: true\n }\n });\n _this._processorEventObserver = new (options.VideoProcessorEventObserver || VideoProcessorEventObserver)(_this._log);\n return _this;\n }\n /**\n * @private\n */\n VideoTrack.prototype._checkIfCanCaptureFrames = function (isPublishing) {\n if (isPublishing === void 0) { isPublishing = false; }\n var canCaptureFrames = true;\n var message = '';\n var _a = this.mediaStreamTrack, enabled = _a.enabled, readyState = _a.readyState;\n if (!enabled) {\n canCaptureFrames = false;\n message = 'MediaStreamTrack is disabled';\n }\n if (readyState === 'ended') {\n canCaptureFrames = false;\n message = 'MediaStreamTrack is ended';\n }\n if (!this.processor) {\n canCaptureFrames = false;\n message = 'VideoProcessor not detected.';\n }\n if (!this._attachments.size && !isPublishing) {\n canCaptureFrames = false;\n message = 'VideoTrack is not publishing and there is no attached element.';\n }\n if (message) {\n this._log.debug(message);\n }\n return { canCaptureFrames: canCaptureFrames, message: message };\n };\n /**\n * @private\n */\n VideoTrack.prototype._captureFrames = function () {\n var _this = this;\n if (this._isCapturing) {\n this._log.debug('Ignoring captureFrames call. Capture is already in progress');\n return;\n }\n if (!this._checkIfCanCaptureFrames().canCaptureFrames) {\n this._isCapturing = false;\n this._log.debug('Cannot capture frames. Ignoring captureFrames call.');\n return;\n }\n this._isCapturing = true;\n this._processorEventObserver.emit('start');\n this._log.debug('Start capturing frames');\n var startTime = Date.now();\n var processFramePeriodMs;\n this._dummyEl.play().then(function () {\n var captureFrame = function (cb) {\n clearTimeout(_this._captureTimeoutId);\n var _a = _this.mediaStreamTrack.getSettings().frameRate, frameRate = _a === void 0 ? DEFAULT_FRAME_RATE : _a;\n var capturePeriodMs = Math.floor(1000 / frameRate);\n var delay = capturePeriodMs - processFramePeriodMs;\n if (delay < 0 || typeof processFramePeriodMs !== 'number') {\n delay = 0;\n }\n _this._captureTimeoutId = setTimeout(cb, delay);\n };\n var process = function () {\n var checkResult = _this._checkIfCanCaptureFrames();\n if (!checkResult.canCaptureFrames) {\n _this._isCapturing = false;\n _this._processorEventObserver.emit('stop', checkResult.message);\n _this._log.debug('Cannot capture frames. Stopping capturing frames.');\n return;\n }\n startTime = Date.now();\n var _a = _this.mediaStreamTrack.getSettings(), _b = _a.width, width = _b === void 0 ? 0 : _b, _c = _a.height, height = _c === void 0 ? 0 : _c;\n // Setting the canvas' dimension triggers a redraw.\n // Only set it if it has changed.\n if (_this._outputFrame && _this._outputFrame.width !== width) {\n _this._outputFrame.width = width;\n _this._outputFrame.height = height;\n }\n if (_this._inputFrame) {\n if (_this._inputFrame.width !== width) {\n _this._inputFrame.width = width;\n _this._inputFrame.height = height;\n }\n _this._inputFrame.getContext('2d').drawImage(_this._dummyEl, 0, 0, width, height);\n }\n var result = null;\n try {\n var input = _this._processorOptions.inputFrameBufferType === 'video' ? _this._dummyEl : _this._inputFrame;\n result = _this.processor.processFrame(input, _this._outputFrame);\n }\n catch (ex) {\n _this._log.debug('Exception detected after calling processFrame.', ex);\n }\n ((result instanceof Promise) ? result : Promise.resolve(result))\n .then(function () {\n if (_this._outputFrame) {\n if (typeof _this.processedTrack.requestFrame === 'function') {\n _this.processedTrack.requestFrame();\n }\n _this._processorEventObserver.emit('stats');\n }\n })\n .finally(function () {\n processFramePeriodMs = Date.now() - startTime;\n captureFrame(process);\n });\n };\n captureFrame(process);\n }).catch(function (error) { return _this._log.error('Video element cannot be played', { error: error, track: _this }); });\n };\n /**\n * @private\n */\n VideoTrack.prototype._initialize = function () {\n var _this = this;\n _super.prototype._initialize.call(this);\n if (this._dummyEl) {\n this._dummyEl.onloadedmetadata = function () {\n if (dimensionsChanged(_this, _this._dummyEl)) {\n _this.dimensions.width = _this._dummyEl.videoWidth;\n _this.dimensions.height = _this._dummyEl.videoHeight;\n }\n };\n this._dummyEl.onresize = function () {\n if (dimensionsChanged(_this, _this._dummyEl)) {\n _this.dimensions.width = _this._dummyEl.videoWidth;\n _this.dimensions.height = _this._dummyEl.videoHeight;\n if (_this.isStarted) {\n _this._log.debug('Dimensions changed:', _this.dimensions);\n _this.emit(VideoTrack.DIMENSIONS_CHANGED, _this);\n }\n }\n };\n }\n };\n /**\n * @private\n */\n VideoTrack.prototype._restartProcessor = function () {\n var processor = this.processor;\n if (processor) {\n var processorOptions = Object.assign({}, this._processorOptions);\n this.removeProcessor(processor);\n this.addProcessor(processor, processorOptions);\n }\n };\n /**\n * @private\n */\n VideoTrack.prototype._start = function (dummyEl) {\n this.dimensions.width = dummyEl.videoWidth;\n this.dimensions.height = dummyEl.videoHeight;\n this._log.debug('Dimensions:', this.dimensions);\n this.emit(VideoTrack.DIMENSIONS_CHANGED, this);\n return _super.prototype._start.call(this, dummyEl);\n };\n /**\n * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n * @returns {this}\n * @example\n * class GrayScaleProcessor {\n * constructor(percentage) {\n * this.percentage = percentage;\n * }\n * processFrame(inputFrameBuffer, outputFrameBuffer) {\n * const context = outputFrameBuffer.getContext('2d');\n * context.filter = `grayscale(${this.percentage}%)`;\n * context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n * }\n * }\n *\n * Video.createLocalVideoTrack().then(function(videoTrack) {\n * videoTrack.addProcessor(new GrayScaleProcessor(100));\n * });\n */\n VideoTrack.prototype.addProcessor = function (processor, options) {\n var _this = this;\n if (!processor || typeof processor.processFrame !== 'function') {\n throw new Error('Received an invalid VideoProcessor from addProcessor.');\n }\n if (this.processor) {\n throw new Error('A VideoProcessor has already been added.');\n }\n if (!this._dummyEl) {\n throw new Error('VideoTrack has not been initialized.');\n }\n this._log.debug('Adding VideoProcessor to the VideoTrack', processor);\n if (!this._unmuteHandler) {\n this._unmuteHandler = function () {\n _this._log.debug('mediaStreamTrack unmuted');\n // NOTE(csantos): On certain scenarios where mediaStreamTrack is coming from muted to unmuted state,\n // the processedTrack doesn't unmutes automatically although enabled is already set to true.\n // This is a terminal state for the processedTrack and should be restarted. (VIDEO-4176)\n if (_this.processedTrack.muted) {\n _this._log.debug('mediaStreamTrack is unmuted but processedTrack is muted. Restarting processor.');\n _this._restartProcessor();\n }\n };\n this.mediaStreamTrack.addEventListener('unmute', this._unmuteHandler);\n }\n this._processorOptions = options || {};\n var _a = this._processorOptions, inputFrameBufferType = _a.inputFrameBufferType, outputFrameBufferContextType = _a.outputFrameBufferContextType;\n if (typeof OffscreenCanvas === 'undefined' && inputFrameBufferType === 'offscreencanvas') {\n throw new Error('OffscreenCanvas is not supported by this browser.');\n }\n if (inputFrameBufferType && inputFrameBufferType !== 'video' && inputFrameBufferType !== 'canvas' && inputFrameBufferType !== 'offscreencanvas') {\n throw new Error(\"Invalid inputFrameBufferType of \" + inputFrameBufferType);\n }\n if (!inputFrameBufferType) {\n inputFrameBufferType = typeof OffscreenCanvas === 'undefined' ? 'canvas' : 'offscreencanvas';\n }\n var _b = this.mediaStreamTrack.getSettings(), _c = _b.width, width = _c === void 0 ? 0 : _c, _d = _b.height, height = _d === void 0 ? 0 : _d, _e = _b.frameRate, frameRate = _e === void 0 ? DEFAULT_FRAME_RATE : _e;\n if (inputFrameBufferType === 'offscreencanvas') {\n this._inputFrame = new OffscreenCanvas(width, height);\n }\n if (inputFrameBufferType === 'canvas') {\n this._inputFrame = document.createElement('canvas');\n }\n if (this._inputFrame) {\n this._inputFrame.width = width;\n this._inputFrame.height = height;\n }\n this._outputFrame = document.createElement('canvas');\n this._outputFrame.width = width;\n this._outputFrame.height = height;\n // NOTE(csantos): Initialize the rendering context for future renders. This also ensures\n // that the correct type is used and on Firefox, it throws an exception if you try to capture\n // frames prior calling getContext https://bugzilla.mozilla.org/show_bug.cgi?id=1572422\n outputFrameBufferContextType = outputFrameBufferContextType || '2d';\n var ctx = this._outputFrame.getContext(outputFrameBufferContextType);\n if (!ctx) {\n throw new Error(\"Cannot get outputFrameBufferContextType: \" + outputFrameBufferContextType + \".\");\n }\n // NOTE(csantos): Zero FPS means we can control when to render the next frame by calling requestFrame.\n // Some browsers such as Firefox doesn't support requestFrame so we will use default, which is an undefined value.\n // This means, the browser will use the highest FPS available.\n var targetFps = typeof CanvasCaptureMediaStreamTrack !== 'undefined' && CanvasCaptureMediaStreamTrack.prototype &&\n // eslint-disable-next-line\n typeof CanvasCaptureMediaStreamTrack.prototype.requestFrame === 'function' ? 0 : undefined;\n this.processedTrack = this._outputFrame.captureStream(targetFps).getTracks()[0];\n this.processedTrack.enabled = this.mediaStreamTrack.enabled;\n this.processor = processor;\n this._processorEventObserver.emit('add', {\n processor: processor,\n captureHeight: height,\n captureWidth: width,\n inputFrameRate: frameRate,\n isRemoteVideoTrack: this.toString().includes('RemoteVideoTrack'),\n inputFrameBufferType: inputFrameBufferType,\n outputFrameBufferContextType: outputFrameBufferContextType\n });\n this._updateElementsMediaStreamTrack();\n this._captureFrames();\n return this;\n };\n /**\n * Create an HTMLVideoElement and attach the {@link VideoTrack} to it.\n *\n * The HTMLVideoElement's srcObject will be set to a new\n * MediaStream containing the {@link VideoTrack}'s MediaStreamTrack.\n *\n * @returns {HTMLVideoElement} videoElement\n * @example\n * const Video = require('twilio-video');\n *\n * Video.createLocalVideoTrack().then(function(videoTrack) {\n * const videoElement = videoTrack.attach();\n * document.body.appendChild(videoElement);\n * });\n */ /**\n * Attach the {@link VideoTrack} to an existing HTMLMediaElement. The\n * HTMLMediaElement could be an HTMLAudioElement or an HTMLVideoElement.\n *\n * If the HTMLMediaElement's srcObject is not set to a MediaStream,\n * this method sets it to a new MediaStream containing the {@link VideoTrack}'s\n * MediaStreamTrack; otherwise, it adds the {@link MediaTrack}'s\n * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n * MediaStreamTracks of the same kind on the MediaStream, this method removes\n * them.\n *\n * @param {HTMLMediaElement} mediaElement - The HTMLMediaElement to attach to\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * const Video = require('twilio-video');\n *\n * const videoElement = document.createElement('video');\n * document.body.appendChild(videoElement);\n *\n * Video.createLocalVideoTrack().then(function(videoTrack) {\n * videoTrack.attach(videoElement);\n * });\n */ /**\n * Attach the {@link VideoTrack} to an HTMLMediaElement selected by\n * document.querySelector. The HTMLMediaElement could be an\n * HTMLAudioElement or an HTMLVideoElement.\n *\n * If the HTMLMediaElement's srcObject is not set to a MediaStream,\n * this method sets it to a new MediaStream containing the {@link VideoTrack}'s\n * MediaStreamTrack; otherwise, it adds the {@link VideoTrack}'s\n * MediaStreamTrack to the existing MediaStream. Finally, if there are any other\n * MediaStreamTracks of the same kind on the MediaStream, this method removes\n * them.\n *\n * @param {string} selector - A query selector for the HTMLMediaElement to\n * attach to\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * const Video = require('twilio-video');\n *\n * const videoElement = document.createElement('video');\n * videoElement.id = 'my-video-element';\n * document.body.appendChild(videoElement);\n *\n * Video.createLocalVideoTrack().then(function(track) {\n * track.attach('#my-video-element');\n * });\n */\n VideoTrack.prototype.attach = function () {\n var result = _super.prototype.attach.apply(this, arguments);\n if (this.processor) {\n this._captureFrames();\n }\n return result;\n };\n /**\n * Detach the {@link VideoTrack} from all previously attached HTMLMediaElements.\n * @returns {Array} mediaElements\n * @example\n * const mediaElements = videoTrack.detach();\n * mediaElements.forEach(mediaElement => mediaElement.remove());\n */ /**\n * Detach the {@link VideoTrack} from a previously attached HTMLMediaElement.\n * @param {HTMLMediaElement} mediaElement - One of the HTMLMediaElements to\n * which the {@link VideoTrack} is attached\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * const videoElement = document.getElementById('my-video-element');\n * videoTrack.detach(videoElement).remove();\n */ /**\n * Detach the {@link VideoTrack} from a previously attached HTMLMediaElement\n * specified by document.querySelector.\n * @param {string} selector - The query selector of HTMLMediaElement to which\n * the {@link VideoTrack} is attached\n * @returns {HTMLMediaElement} mediaElement\n * @example\n * videoTrack.detach('#my-video-element').remove();\n */\n VideoTrack.prototype.detach = function () {\n return _super.prototype.detach.apply(this, arguments);\n };\n /**\n * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n * @returns {this}\n * @example\n * class GrayScaleProcessor {\n * constructor(percentage) {\n * this.percentage = percentage;\n * }\n * processFrame(inputFrameBuffer, outputFrameBuffer) {\n * const context = outputFrameBuffer.getContext('2d');\n * context.filter = `grayscale(${this.percentage}%)`;\n * context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n * }\n * }\n *\n * Video.createLocalVideoTrack().then(function(videoTrack) {\n * const grayScaleProcessor = new GrayScaleProcessor(100);\n * videoTrack.addProcessor(grayScaleProcessor);\n * document.getElementById('remove-button').onclick = () => videoTrack.removeProcessor(grayScaleProcessor);\n * });\n */\n VideoTrack.prototype.removeProcessor = function (processor) {\n if (!processor) {\n throw new Error('Received an invalid VideoProcessor from removeProcessor.');\n }\n if (!this.processor) {\n throw new Error('No existing VideoProcessor detected.');\n }\n if (processor !== this.processor) {\n throw new Error('The provided VideoProcessor is different than the existing one.');\n }\n this._processorEventObserver.emit('remove');\n this._log.debug('Removing VideoProcessor from the VideoTrack', processor);\n clearTimeout(this._captureTimeoutId);\n this.mediaStreamTrack.removeEventListener('unmute', this._unmuteHandler);\n this._processorOptions = {};\n this._unmuteHandler = null;\n this._isCapturing = false;\n this.processor = null;\n this.processedTrack = null;\n this._inputFrame = null;\n this._outputFrame = null;\n this._updateElementsMediaStreamTrack();\n return this;\n };\n return VideoTrack;\n}(MediaTrack));\nVideoTrack.DIMENSIONS_CHANGED = 'dimensionsChanged';\nfunction dimensionsChanged(track, elem) {\n return track.dimensions.width !== elem.videoWidth\n || track.dimensions.height !== elem.videoHeight;\n}\n/**\n * A {@link VideoTrack}'s width and height.\n * @typedef {object} VideoTrack.Dimensions\n * @property {?number} width - The {@link VideoTrack}'s width or null if the\n * {@link VideoTrack} has not yet started\n * @property {?number} height - The {@link VideoTrack}'s height or null if the\n * {@link VideoTrack} has not yet started\n */\n/**\n * A {@link VideoProcessor}, when added via {@link VideoTrack#addProcessor},\n * is used to process incoming video frames before\n * sending to the encoder or renderer.\n * @typedef {object} VideoProcessor\n * @property {function} processFrame - A callback to receive input and output frame buffers for processing.\n * The input frame buffer contains the original video frame which can be used for additional processing\n * such as applying filters to it. The output frame buffer is used to receive the processed video frame\n * before sending to the encoder or renderer.\n *\n * Any exception raised (either synchronously or asynchronously) in `processFrame` will result in the frame being dropped.\n * This callback has the following signature:

\n * processFrame(
\n *   inputFrameBuffer: OffscreenCanvas | HTMLCanvasElement | HTMLVideoElement,
\n *   outputFrameBuffer: HTMLCanvasElement
\n * ): Promise<void> | void;\n *\n * @example\n * class GrayScaleProcessor {\n * constructor(percentage) {\n * this.percentage = percentage;\n * }\n * processFrame(inputFrameBuffer, outputFrameBuffer) {\n * const context = outputFrameBuffer.getContext('2d');\n * context.filter = `grayscale(${this.percentage}%)`;\n * context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n * }\n * }\n */\n/**\n * Possible options to provide to {@link LocalVideoTrack#addProcessor} and {@link RemoteVideoTrack#addProcessor}.\n * @typedef {object} AddProcessorOptions\n * @property {string} [inputFrameBufferType=\"offscreencanvas\"] - This option allows you to specify what kind of input you want to receive in your\n * Video Processor. The default is `offscreencanvas` and will fallback to a regular `canvas` if the browser does not support it.\n * Possible values include the following.\n *
\n *
\n * `offscreencanvas` - Your Video Processor will receive an [OffscreenCanvas](https://developer.mozilla.org/en-US/docs/Web/API/OffscreenCanvas)\n * which is good for canvas-related processing that can be rendered off screen.\n *
\n *
\n * `canvas` - Your Video Processor will receive an [HTMLCanvasElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement).\n * This is recommended on browsers that doesn't support `OffscreenCanvas`, or if you need to render the frame on the screen.\n *
\n *
\n * `video` - Your Video Processor will receive an [HTMLVideoElement](https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement).\n * Use this option if you are processing the frame using WebGL or if you only need to [draw](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage)\n * the frame directly to your output canvas.\n * @property {string} [outputFrameBufferContextType=\"2d\"] - The SDK needs the [context type](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext)\n * that your Video Processor uses in order to properly generate the processed track. For example, if your Video Processor uses WebGL2 (`canvas.getContext('webgl2')`),\n * you should set `outputFrameBufferContextType` to `webgl2`. Or if you're using Canvas 2D processing (`canvas.getContext('2d')`),\n * you should set `outputFrameBufferContextType` to `2d`.\n */\n/**\n * The {@link VideoTrack}'s dimensions changed.\n * @param {VideoTrack} track - The {@link VideoTrack} whose dimensions changed\n * @event VideoTrack#dimensionsChanged\n */\n/**\n * The {@link VideoTrack} was disabled, i.e. \"paused\".\n * @param {VideoTrack} track - The {@link VideoTrack} that was disabled\n * @event VideoTrack#disabled\n */\n/**\n * The {@link VideoTrack} was enabled, i.e. \"unpaused\".\n * @param {VideoTrack} track - The {@link VideoTrack} that was enabled\n * @event VideoTrack#enabled\n */\n/**\n * The {@link VideoTrack} started. This means there is enough video data to\n * begin playback.\n * @param {VideoTrack} track - The {@link VideoTrack} that started\n * @event VideoTrack#started\n */\nmodule.exports = VideoTrack;\n//# sourceMappingURL=videotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TrackTransceiver = require('../transceiver');\n/**\n * A {@link DataTrackTransceiver} represents either one or more local\n * RTCDataChannels or a single remote RTCDataChannel. It can be used to send or\n * receive data.\n * @extends TrackTransceiver\n * @property {string} id\n * @property {string} kind - \"data\"\n * @property {?number} maxPacketLifeTime\n * @property {?number} maxRetransmits\n * @property {boolean} ordered\n */\nvar DataTrackTransceiver = /** @class */ (function (_super) {\n __extends(DataTrackTransceiver, _super);\n /**\n * Construct a {@link DataTrackTransceiver}.\n * @param {string} id\n * @param {?number} maxPacketLifeTime\n * @param {?number} maxRetransmits\n * @param {boolean} ordered\n */\n function DataTrackTransceiver(id, maxPacketLifeTime, maxRetransmits, ordered) {\n var _this = _super.call(this, id, 'data') || this;\n Object.defineProperties(_this, {\n maxPacketLifeTime: {\n enumerable: true,\n value: maxPacketLifeTime\n },\n maxRetransmits: {\n enumerable: true,\n value: maxRetransmits\n },\n ordered: {\n enumerable: true,\n value: ordered\n }\n });\n return _this;\n }\n return DataTrackTransceiver;\n}(TrackTransceiver));\nmodule.exports = DataTrackTransceiver;\n//# sourceMappingURL=transceiver.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar StateMachine = require('./statemachine');\nvar _a = require('./util'), buildLogLevels = _a.buildLogLevels, makeUUID = _a.makeUUID;\nvar Log = require('./util/log');\nvar NetworkMonitor = require('./util/networkmonitor');\nvar Timeout = require('./util/timeout');\nvar nInstances = 0;\n/*\n TwilioConnection states\n -----------------------\n\n ------------------------------------------\n | |\n | v\n +---------+ +--------------+ +----------+\n | early | ----> | connecting | ----> | closed |\n +---------+ +--------------+ +----------+\n ^ | ^ | ^ ^\n | --------------------- | | | |\n | | --------------------- | | |\n | | | --------------------|------------------ |\n | v | | v |\n +----------+ +--------+ |\n | waiting | --------> | open | ---------------\n +----------+ +--------+\n */\nvar states = {\n closed: [],\n connecting: ['closed', 'open', 'waiting'],\n early: ['closed', 'connecting'],\n open: ['closed'],\n waiting: ['closed', 'connecting', 'early', 'open']\n};\nvar events = {\n closed: 'close',\n open: 'open',\n waiting: 'waiting'\n};\nvar TCMP_VERSION = 2;\nvar DEFAULT_MAX_CONSECUTIVE_MISSED_HEARTBEATS = 3;\nvar DEFAULT_MAX_CONSECUTIVE_FAILED_HELLOS = 3;\nvar DEFAULT_MAX_REQUESTED_HEARTBEAT_TIMEOUT = 5000;\nvar DEFAULT_OPEN_TIMEOUT = 15000;\nvar DEFAULT_WELCOME_TIMEOUT = 5000;\nvar OUTGOING_HEARTBEAT_OFFSET = 200;\nvar WS_CLOSE_NORMAL = 1000;\nvar WS_CLOSE_WELCOME_TIMEOUT = 3000;\nvar WS_CLOSE_HEARTBEATS_MISSED = 3001;\nvar WS_CLOSE_HELLO_FAILED = 3002;\nvar WS_CLOSE_SEND_FAILED = 3003;\nvar WS_CLOSE_NETWORK_CHANGED = 3004;\nvar WS_CLOSE_BUSY_WAIT = 3005;\nvar WS_CLOSE_SERVER_BUSY = 3006;\nvar WS_CLOSE_OPEN_TIMEOUT = 3007;\n// NOTE(joma): If you want to use close code 3008, please increment\n// the close code in test/integration/spec/docker/reconnection.js\n// line number 492.\nvar toplevel = globalThis;\nvar WebSocket = toplevel.WebSocket ? toplevel.WebSocket : require('ws');\nvar CloseReason = {\n BUSY: 'busy',\n FAILED: 'failed',\n LOCAL: 'local',\n REMOTE: 'remote',\n TIMEOUT: 'timeout'\n};\nvar wsCloseCodesToCloseReasons = new Map([\n [WS_CLOSE_WELCOME_TIMEOUT, CloseReason.TIMEOUT],\n [WS_CLOSE_HEARTBEATS_MISSED, CloseReason.TIMEOUT],\n [WS_CLOSE_HELLO_FAILED, CloseReason.FAILED],\n [WS_CLOSE_SEND_FAILED, CloseReason.FAILED],\n [WS_CLOSE_NETWORK_CHANGED, CloseReason.TIMEOUT],\n [WS_CLOSE_SERVER_BUSY, CloseReason.BUSY],\n [WS_CLOSE_OPEN_TIMEOUT, CloseReason.TIMEOUT]\n]);\n/**\n * A {@link TwilioConnection} represents a WebSocket connection\n * to a Twilio Connections Messaging Protocol (TCMP) server.\n * @fires TwilioConnection#close\n * @fires TwilioConnection#error\n * @fires TwilioConnection#message\n * @fires TwilioConnection#open\n * @fires TwilioConnection#waiting\n */\nvar TwilioConnection = /** @class */ (function (_super) {\n __extends(TwilioConnection, _super);\n /**\n * Construct a {@link TwilioConnection}.\n * @param {string} serverUrl - TCMP server url\n * @param {TwilioConnectionOptions} options - {@link TwilioConnection} options\n */\n function TwilioConnection(serverUrl, options) {\n var _this = _super.call(this, 'early', states) || this;\n options = Object.assign({\n helloBody: null,\n maxConsecutiveFailedHellos: DEFAULT_MAX_CONSECUTIVE_FAILED_HELLOS,\n maxConsecutiveMissedHeartbeats: DEFAULT_MAX_CONSECUTIVE_MISSED_HEARTBEATS,\n requestedHeartbeatTimeout: DEFAULT_MAX_REQUESTED_HEARTBEAT_TIMEOUT,\n openTimeout: DEFAULT_OPEN_TIMEOUT,\n welcomeTimeout: DEFAULT_WELCOME_TIMEOUT,\n Log: Log,\n WebSocket: WebSocket\n }, options);\n var logLevels = buildLogLevels(options.logLevel);\n var log = new options.Log('default', _this, logLevels, options.loggerName);\n var networkMonitor = options.networkMonitor ? new NetworkMonitor(function () {\n var type = networkMonitor.type;\n var reason = \"Network changed\" + (type ? \" to \" + type : '');\n log.debug(reason);\n _this._close({ code: WS_CLOSE_NETWORK_CHANGED, reason: reason });\n }) : null;\n Object.defineProperties(_this, {\n _busyWaitTimeout: {\n value: null,\n writable: true\n },\n _consecutiveHeartbeatsMissed: {\n value: 0,\n writable: true\n },\n _cookie: {\n value: null,\n writable: true\n },\n _eventObserver: {\n value: options.eventObserver\n },\n _heartbeatTimeout: {\n value: null,\n writable: true\n },\n _hellosLeft: {\n value: options.maxConsecutiveFailedHellos,\n writable: true\n },\n _instanceId: {\n value: ++nInstances\n },\n _log: {\n value: log\n },\n _messageQueue: {\n value: []\n },\n _networkMonitor: {\n value: networkMonitor\n },\n _options: {\n value: options\n },\n _openTimeout: {\n value: null,\n writable: true\n },\n _sendHeartbeatTimeout: {\n value: null,\n writable: true\n },\n _serverUrl: {\n value: serverUrl\n },\n _welcomeTimeout: {\n value: null,\n writable: true\n },\n _ws: {\n value: null,\n writable: true\n }\n });\n var eventsToLevels = {\n connecting: 'info',\n early: 'info',\n open: 'info',\n waiting: 'warning',\n closed: 'info'\n };\n _this.on('stateChanged', function (state) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (state in events) {\n _this.emit.apply(_this, __spreadArray([events[state]], __read(args)));\n }\n var event = { name: state, group: 'signaling', level: eventsToLevels[_this.state] };\n if (state === 'closed') {\n var _a = __read(args, 1), reason = _a[0];\n event.payload = { reason: reason };\n event.level = reason === CloseReason.LOCAL ? 'info' : 'error';\n }\n _this._eventObserver.emit('event', event);\n });\n _this._eventObserver.emit('event', { name: _this.state, group: 'signaling', level: eventsToLevels[_this.state] });\n _this._connect();\n return _this;\n }\n TwilioConnection.prototype.toString = function () {\n return \"[TwilioConnection #\" + this._instanceId + \": \" + this._ws.url + \"]\";\n };\n /**\n * Close the {@link TwilioConnection}.\n * @param {{code: number, reason: string}} event\n * @private\n */\n TwilioConnection.prototype._close = function (_a) {\n var code = _a.code, reason = _a.reason;\n if (this.state === 'closed') {\n return;\n }\n if (this._openTimeout) {\n this._openTimeout.clear();\n }\n if (this._welcomeTimeout) {\n this._welcomeTimeout.clear();\n }\n if (this._heartbeatTimeout) {\n this._heartbeatTimeout.clear();\n }\n if (this._sendHeartbeatTimeout) {\n this._sendHeartbeatTimeout.clear();\n }\n if (this._networkMonitor) {\n this._networkMonitor.stop();\n }\n if (this._busyWaitTimeout && code !== WS_CLOSE_BUSY_WAIT) {\n this._busyWaitTimeout.clear();\n }\n this._messageQueue.splice(0);\n var log = this._log;\n if (code === WS_CLOSE_NORMAL) {\n log.debug('Closed');\n this.transition('closed', null, [CloseReason.LOCAL]);\n }\n else {\n log.warn(\"Closed: \" + code + \" - \" + reason);\n if (code !== WS_CLOSE_BUSY_WAIT) {\n this.transition('closed', null, [\n wsCloseCodesToCloseReasons.get(code) || CloseReason.REMOTE\n ]);\n }\n }\n var readyState = this._ws.readyState;\n var WebSocket = this._options.WebSocket;\n if (readyState !== WebSocket.CLOSING && readyState !== WebSocket.CLOSED) {\n this._ws.close(code, reason);\n }\n };\n /**\n * Connect to the TCMP server.\n * @private\n */\n TwilioConnection.prototype._connect = function () {\n var _this = this;\n var log = this._log;\n if (this.state === 'waiting') {\n this.transition('early');\n }\n else if (this.state !== 'early') {\n log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for connecting to the\"\n + ' TCMP server.');\n return;\n }\n this._ws = new this._options.WebSocket(this._serverUrl);\n var ws = this._ws;\n log.debug('Created a new WebSocket:', ws);\n ws.addEventListener('close', function (event) { return _this._close(event); });\n var openTimeout = this._options.openTimeout;\n // Add a timeout for getting the onopen event on the WebSocket (15 sec). After that, attempt to reconnect only if this is not the first attempt.\n this._openTimeout = new Timeout(function () {\n var reason = \"Failed to open in \" + openTimeout + \" ms\";\n _this._close({ code: WS_CLOSE_OPEN_TIMEOUT, reason: reason });\n }, openTimeout);\n ws.addEventListener('open', function () {\n log.debug('WebSocket opened:', ws);\n _this._openTimeout.clear();\n _this._startHandshake();\n if (_this._networkMonitor) {\n _this._networkMonitor.start();\n }\n });\n ws.addEventListener('message', function (message) {\n log.debug(\"Incoming: \" + message.data);\n try {\n message = JSON.parse(message.data);\n }\n catch (error) {\n _this.emit('error', error);\n return;\n }\n switch (message.type) {\n case 'bad':\n _this._handleBad(message);\n break;\n case 'busy':\n _this._handleBusy(message);\n break;\n case 'bye':\n // Do nothing.\n break;\n case 'msg':\n _this._handleMessage(message);\n // NOTE(mpatwardhan): Each incoming message should be treated as an incoming\n // heartbeat intentionally falling through to 'heartbeat' case.\n // eslint-disable-next-line no-fallthrough\n case 'heartbeat':\n _this._handleHeartbeat();\n break;\n case 'welcome':\n _this._handleWelcome(message);\n break;\n default:\n _this._log.debug(\"Unknown message type: \" + message.type);\n _this.emit('error', new Error(\"Unknown message type: \" + message.type));\n break;\n }\n });\n };\n /**\n * Handle an incoming \"bad\" message.\n * @param {{reason: string}} message\n * @private\n */\n TwilioConnection.prototype._handleBad = function (_a) {\n var reason = _a.reason;\n var log = this._log;\n if (!['connecting', 'open'].includes(this.state)) {\n log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"bad\\\" message\"\n + ' from the TCMP server.');\n return;\n }\n if (this.state === 'connecting') {\n log.warn(\"Closing: \" + WS_CLOSE_HELLO_FAILED + \" - \" + reason);\n this._close({ code: WS_CLOSE_HELLO_FAILED, reason: reason });\n return;\n }\n log.debug(\"Error: \" + reason);\n this.emit('error', new Error(reason));\n };\n /**\n * Handle an incoming \"busy\" message.\n * @param {{cookie: ?string, keepAlive: boolean, retryAfter: number}} message\n * @private\n */\n TwilioConnection.prototype._handleBusy = function (_a) {\n var _this = this;\n var cookie = _a.cookie, keepAlive = _a.keepAlive, retryAfter = _a.retryAfter;\n var log = this._log;\n if (!['connecting', 'waiting'].includes(this.state)) {\n log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"busy\\\" message\"\n + ' from the TCMP server.');\n return;\n }\n if (this._busyWaitTimeout) {\n this._busyWaitTimeout.clear();\n }\n if (this._welcomeTimeout) {\n this._welcomeTimeout.clear();\n }\n var reason = retryAfter < 0\n ? 'Received terminal \"busy\" message'\n : \"Received \\\"busy\\\" message, retrying after \" + retryAfter + \" ms\";\n if (retryAfter < 0) {\n log.warn(\"Closing: \" + WS_CLOSE_SERVER_BUSY + \" - \" + reason);\n this._close({ code: WS_CLOSE_SERVER_BUSY, reason: reason });\n return;\n }\n var maxConsecutiveFailedHellos = this._options.maxConsecutiveFailedHellos;\n this._hellosLeft = maxConsecutiveFailedHellos;\n this._cookie = cookie || null;\n if (keepAlive) {\n log.warn(reason);\n this._busyWaitTimeout = new Timeout(function () { return _this._startHandshake(); }, retryAfter);\n }\n else {\n log.warn(\"Closing: \" + WS_CLOSE_BUSY_WAIT + \" - \" + reason);\n this._close({ code: WS_CLOSE_BUSY_WAIT, reason: reason });\n this._busyWaitTimeout = new Timeout(function () { return _this._connect(); }, retryAfter);\n }\n this.transition('waiting', null, [keepAlive, retryAfter]);\n };\n /**\n * Handle an incoming \"heartbeat\" message.\n * @private\n */\n TwilioConnection.prototype._handleHeartbeat = function () {\n if (this.state !== 'open') {\n this._log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"heartbeat\\\"\"\n + ' message from the TCMP server.');\n return;\n }\n this._heartbeatTimeout.reset();\n };\n /**\n * Handle a missed \"heartbeat\" message.\n * @private\n */\n TwilioConnection.prototype._handleHeartbeatTimeout = function () {\n if (this.state !== 'open') {\n return;\n }\n var log = this._log;\n var maxConsecutiveMissedHeartbeats = this._options.maxConsecutiveMissedHeartbeats;\n log.debug(\"Consecutive heartbeats missed: \" + maxConsecutiveMissedHeartbeats);\n var reason = \"Missed \" + maxConsecutiveMissedHeartbeats + \" \\\"heartbeat\\\" messages\";\n log.warn(\"Closing: \" + WS_CLOSE_HEARTBEATS_MISSED + \" - \" + reason);\n this._close({ code: WS_CLOSE_HEARTBEATS_MISSED, reason: reason });\n };\n /**\n * Handle an incoming \"msg\" message.\n * @param {{body: object}} message\n * @private\n */\n TwilioConnection.prototype._handleMessage = function (_a) {\n var body = _a.body;\n if (this.state !== 'open') {\n this._log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"msg\\\" message\"\n + ' from the TCMP server.');\n return;\n }\n this.emit('message', body);\n };\n /**\n * Handle an incoming \"welcome\" message.\n * @param {{ negotiatedTimeout: number }} message\n * @private\n */\n TwilioConnection.prototype._handleWelcome = function (_a) {\n var _this = this;\n var negotiatedTimeout = _a.negotiatedTimeout;\n var log = this._log;\n if (!['connecting', 'waiting'].includes(this.state)) {\n log.warn(\"Unexpected state \\\"\" + this.state + \"\\\" for handling a \\\"welcome\\\"\"\n + ' message from the TCMP server.');\n return;\n }\n if (this.state === 'waiting') {\n log.debug('Received \"welcome\" message, no need to retry connection.');\n this._busyWaitTimeout.clear();\n }\n var maxConsecutiveMissedHeartbeats = this._options.maxConsecutiveMissedHeartbeats;\n var heartbeatTimeout = negotiatedTimeout * maxConsecutiveMissedHeartbeats;\n var outgoingHeartbeatTimeout = negotiatedTimeout - OUTGOING_HEARTBEAT_OFFSET;\n this._welcomeTimeout.clear();\n this._heartbeatTimeout = new Timeout(function () { return _this._handleHeartbeatTimeout(); }, heartbeatTimeout);\n this._messageQueue.splice(0).forEach(function (message) { return _this._send(message); });\n this._sendHeartbeatTimeout = new Timeout(function () { return _this._sendHeartbeat(); }, outgoingHeartbeatTimeout);\n this.transition('open');\n };\n /**\n * Handle a missed \"welcome\" message.\n * @private\n */\n TwilioConnection.prototype._handleWelcomeTimeout = function () {\n if (this.state !== 'connecting') {\n return;\n }\n var log = this._log;\n if (this._hellosLeft <= 0) {\n var reason = 'All handshake attempts failed';\n log.warn(\"Closing: \" + WS_CLOSE_WELCOME_TIMEOUT + \" - \" + reason);\n this._close({ code: WS_CLOSE_WELCOME_TIMEOUT, reason: reason });\n return;\n }\n var maxConsecutiveFailedHellos = this._options.maxConsecutiveFailedHellos;\n log.warn(\"Handshake attempt \" + (maxConsecutiveFailedHellos - this._hellosLeft) + \" failed\");\n this._startHandshake();\n };\n /**\n * Send a message to the TCMP server.\n * @param {*} message\n * @private\n */\n TwilioConnection.prototype._send = function (message) {\n var readyState = this._ws.readyState;\n var WebSocket = this._options.WebSocket;\n if (readyState === WebSocket.OPEN) {\n var data = JSON.stringify(message);\n this._log.debug(\"Outgoing: \" + data);\n try {\n this._ws.send(data);\n if (this._sendHeartbeatTimeout) {\n // Each outgoing message is to be treated as an outgoing heartbeat.\n this._sendHeartbeatTimeout.reset();\n }\n }\n catch (error) {\n var reason = 'Failed to send message';\n this._log.warn(\"Closing: \" + WS_CLOSE_SEND_FAILED + \" - \" + reason);\n this._close({ code: WS_CLOSE_SEND_FAILED, reason: reason });\n }\n }\n };\n /**\n * Send a \"heartbeat\" message.\n * @private\n */\n TwilioConnection.prototype._sendHeartbeat = function () {\n if (this.state === 'closed') {\n return;\n }\n this._send({ type: 'heartbeat' });\n };\n /**\n * Send a \"hello\" message.\n * @private\n */\n TwilioConnection.prototype._sendHello = function () {\n var _a = this._options, helloBody = _a.helloBody, timeout = _a.requestedHeartbeatTimeout;\n var hello = {\n id: makeUUID(),\n timeout: timeout,\n type: 'hello',\n version: TCMP_VERSION\n };\n if (this._cookie) {\n hello.cookie = this._cookie;\n }\n if (helloBody) {\n hello.body = helloBody;\n }\n this._send(hello);\n };\n /**\n * Send or enqueue a message.\n * @param {*} message\n * @private\n */\n TwilioConnection.prototype._sendOrEnqueue = function (message) {\n var _this = this;\n if (this.state === 'closed') {\n return;\n }\n var sendOrEnqueue = this.state === 'open'\n ? function (message) { return _this._send(message); }\n : function (message) { return _this._messageQueue.push(message); };\n sendOrEnqueue(message);\n };\n /**\n * Start the TCMP handshake.\n * @private\n */\n TwilioConnection.prototype._startHandshake = function () {\n var _this = this;\n if (['early', 'waiting'].includes(this.state)) {\n this.transition('connecting');\n }\n if (this.state !== 'connecting') {\n return;\n }\n this._hellosLeft--;\n this._sendHello();\n var welcomeTimeout = this._options.welcomeTimeout;\n this._welcomeTimeout = new Timeout(function () { return _this._handleWelcomeTimeout(); }, welcomeTimeout);\n };\n /**\n * Close the {@link TwilioConnection}.\n * @returns {void}\n */\n TwilioConnection.prototype.close = function () {\n if (this.state === 'closed') {\n return;\n }\n this._sendOrEnqueue({ type: 'bye' });\n this._close({ code: WS_CLOSE_NORMAL, reason: 'Normal' });\n };\n /**\n * Send a \"msg\" message.\n * @param {*} body\n * @returns {void}\n */\n TwilioConnection.prototype.sendMessage = function (body) {\n this._sendOrEnqueue({ body: body, type: 'msg' });\n };\n return TwilioConnection;\n}(StateMachine));\n/**\n * A unique string depicting the reason for the {@link TwilioConnection} being closed.\n * @enum {string}\n */\nTwilioConnection.CloseReason = CloseReason;\n/**\n * A {@link TwilioConnection} was closed.\n * @event TwilioConnection#close\n * @param {CloseReason} reason - The reason for the {@link TwilioConnection} being closed\n */\n/**\n * A {@link TwilioConnection} received an error from the TCMP server.\n * @event TwilioConnection#error\n * @param {Error} error - The TCMP server error\n */\n/**\n * A {@link TwilioConnection} received a message from the TCMP server.\n * @event TwilioConnection#message\n * @param {*} body - Message body\n */\n/**\n * A {@link TwilioConnection} completed a hello/welcome handshake with the TCMP server.\n * @event TwilioConnection#open\n */\n/**\n * A {@link TwilioConnection} received a \"busy\" message from the TCMP server.\n * @event TwilioConnection#waiting\n * @param {boolean} keepAlive - true if the WebSocket connection is retained\n * @param {number} retryAfter - delay in milliseconds after which a retry is attempted\n */\n/**\n * {@link TwilioConnection} options\n * @typedef {object} TwilioConnectionOptions\n * @property {EventObserver} [eventObserver] - Optional event observer\n * @property {*} [helloBody=null] - Optional body for \"hello\" message\n * @property {LogLevel} [logLevel=warn] - Log level of the {@link TwilioConnection}\n * @property {number} [maxConsecutiveFailedHellos=3] - Max. number of consecutive failed \"hello\"s\n * @property {number} [maxConsecutiveMissedHeartbeats=3] - Max. number of (effective) consecutive \"heartbeat\" messages that can be missed\n * @property {number} [requestedHeartbeatTimeout=5000] - \"heartbeat\" timeout (ms) requested by the {@link TwilioConnection}\n * @property {number} [welcomeTimeout=5000] - Time (ms) to wait for the \"welcome\" message after sending the \"hello\" message\n */\nmodule.exports = TwilioConnection;\n//# sourceMappingURL=twilioconnection.js.map","module.exports = WebSocket;\n","'use strict';\n/**\n * Calculates the moving average delta for the given pair ofsamples. A sample (S)\n * consists of a numerator (Sn) and a denominator (Sd).The moving average delta is\n * calculated as follows:\n *\n * MovingAvgDelta = (Sn[1] - Sn[0]) / (Sd[1] - Sd[0])\n */\nvar MovingAverageDelta = /** @class */ (function () {\n /**\n * Constructor.\n */\n function MovingAverageDelta() {\n Object.defineProperties(this, {\n _samples: {\n value: [\n { denominator: 0, numerator: 0 },\n { denominator: 0, numerator: 0 }\n ],\n }\n });\n }\n /**\n * Get the moving average delta.\n * @returns {number}\n */\n MovingAverageDelta.prototype.get = function () {\n var samples = this._samples;\n var denominatorDelta = (samples[1].denominator - samples[0].denominator) || Infinity;\n var numeratorDelta = samples[1].numerator - samples[0].numerator;\n return numeratorDelta / denominatorDelta;\n };\n /**\n * Put a sample and get rid of the older sample to maintain sample size of 2.\n * @param numerator\n * @param denominator\n */\n MovingAverageDelta.prototype.putSample = function (numerator, denominator) {\n var samples = this._samples;\n samples.shift();\n samples.push({ denominator: denominator, numerator: numerator });\n };\n return MovingAverageDelta;\n}());\nmodule.exports = MovingAverageDelta;\n//# sourceMappingURL=movingaveragedelta.js.map","/* eslint-disable no-console */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('events').EventEmitter;\nvar VALID_GROUPS = [\n 'signaling',\n 'room',\n 'media',\n 'quality',\n 'video-processor',\n 'preflight'\n];\nvar VALID_LEVELS = [\n 'debug',\n 'error',\n 'info',\n 'warning'\n];\n/**\n * EventObserver listens to SDK events and re-emits them on the\n * @link EventListener} with some additional information.\n * @extends EventEmitter\n * @emits EventObserver#event\n */\nvar EventObserver = /** @class */ (function (_super) {\n __extends(EventObserver, _super);\n /**\n * Constructor.\n * @param {InsightsPublisher} publisher\n * @param {number} connectTimestamp\n * @param {Log} log\n * @param {EventListener} [eventListener]\n */\n function EventObserver(publisher, connectTimestamp, log, eventListener) {\n if (eventListener === void 0) { eventListener = null; }\n var _this = _super.call(this) || this;\n _this.on('event', function (_a) {\n var name = _a.name, group = _a.group, level = _a.level, payload = _a.payload;\n if (typeof name !== 'string') {\n log.error('Unexpected name: ', name);\n throw new Error('Unexpected name: ', name);\n }\n if (!VALID_GROUPS.includes(group)) {\n log.error('Unexpected group: ', group);\n throw new Error('Unexpected group: ', group);\n }\n if (!VALID_LEVELS.includes(level)) {\n log.error('Unexpected level: ', level);\n throw new Error('Unexpected level: ', level);\n }\n var timestamp = Date.now();\n var elapsedTime = timestamp - connectTimestamp;\n var publisherPayload = Object.assign({ elapsedTime: elapsedTime, level: level }, payload ? payload : {});\n publisher.publish(group, name, publisherPayload);\n var event = Object.assign({\n elapsedTime: elapsedTime,\n group: group,\n level: level,\n name: name,\n timestamp: timestamp\n }, payload ? { payload: payload } : {});\n var logLevel = {\n debug: 'debug',\n error: 'error',\n info: 'info',\n warning: 'warn',\n }[level];\n log[logLevel]('event', event);\n if (eventListener && group === 'signaling') {\n eventListener.emit('event', event);\n }\n });\n return _this;\n }\n return EventObserver;\n}(EventEmitter));\n/**\n * An SDK event.\n * @event EventObserver#event\n * @param {{name: string, payload: *}} event\n */\nmodule.exports = EventObserver;\n//# sourceMappingURL=eventobserver.js.map","/* eslint-disable camelcase */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar EventEmitter = require('events').EventEmitter;\nvar getUserAgent = require('..').getUserAgent;\nvar MAX_RECONNECT_ATTEMPTS = 5;\nvar RECONNECT_INTERVAL_MS = 50;\nvar WS_CLOSE_NORMAL = 1000;\nvar toplevel = globalThis;\nvar WebSocket = toplevel.WebSocket ? toplevel.WebSocket : require('ws');\nvar _a = require('../constants'), hardwareDevicePublisheriPad = _a.hardwareDevicePublisheriPad, hardwareDevicePublisheriPhone = _a.hardwareDevicePublisheriPhone;\nvar util = require('../../util');\nvar browserdetection = require('../browserdetection');\n/**\n * Publish events to the Insights gateway.\n * @extends EventEmitter\n * @emits InsightsPublisher#connected\n * @emits InsightsPublisher#disconnected\n * @emits InsightsPublisher#reconnecting\n */\nvar InsightsPublisher = /** @class */ (function (_super) {\n __extends(InsightsPublisher, _super);\n /**\n * @param {string} token - Insights gateway token\n * @param {string} sdkName - Name of the SDK using the {@link InsightsPublisher}\n * @param {string} sdkVersion - Version of the SDK using the {@link InsightsPublisher}\n * @param {string} environment - One of 'dev', 'stage' or 'prod'\n * @param {string} realm - Region identifier\n * @param {InsightsPublisherOptions} options - Override default behavior\n */\n function InsightsPublisher(token, sdkName, sdkVersion, environment, realm, options) {\n var _this = _super.call(this) || this;\n options = Object.assign({\n gateway: createGateway(environment, realm) + \"/v1/VideoEvents\",\n maxReconnectAttempts: MAX_RECONNECT_ATTEMPTS,\n reconnectIntervalMs: RECONNECT_INTERVAL_MS,\n userAgent: getUserAgent(),\n WebSocket: WebSocket,\n }, options);\n Object.defineProperties(_this, {\n _connectTimestamp: {\n value: 0,\n writable: true\n },\n _eventQueue: {\n value: []\n },\n _readyToConnect: {\n value: util.defer()\n },\n _reconnectAttemptsLeft: {\n value: options.maxReconnectAttempts,\n writable: true\n },\n _ws: {\n value: null,\n writable: true\n },\n _WebSocket: {\n value: options.WebSocket\n }\n });\n _this._readyToConnect.promise.then(function (_a) {\n var roomSid = _a.roomSid, participantSid = _a.participantSid;\n var self = _this;\n _this.on('disconnected', function maybeReconnect(error) {\n self._session = null;\n if (error && self._reconnectAttemptsLeft > 0) {\n self.emit('reconnecting');\n reconnect(self, token, sdkName, sdkVersion, roomSid, participantSid, options);\n return;\n }\n self.removeListener('disconnected', maybeReconnect);\n });\n connect(_this, token, sdkName, sdkVersion, roomSid, participantSid, options);\n }).catch(function () {\n // ignore failures to connect\n });\n return _this;\n }\n /**\n * Start connecting to the Insights gateway.\n * @param {string} roomSid\n * @param {string} participantSid\n * @returns {void}\n */\n InsightsPublisher.prototype.connect = function (roomSid, participantSid) {\n this._readyToConnect.resolve({ roomSid: roomSid, participantSid: participantSid });\n };\n /**\n * Publish an event to the Insights gateway.\n * @private\n * @param {*} event\n */\n InsightsPublisher.prototype._publish = function (event) {\n event.session = this._session;\n this._ws.send(JSON.stringify(event));\n };\n /**\n * Disconnect from the Insights gateway.\n * @returns {boolean} true if called when connecting/open, false if not\n */\n InsightsPublisher.prototype.disconnect = function () {\n if (this._ws === null\n || this._ws.readyState === this._WebSocket.CLOSING\n || this._ws.readyState === this._WebSocket.CLOSED) {\n return false;\n }\n try {\n this._ws.close();\n }\n catch (error) {\n // Do nothing.\n }\n this.emit('disconnected');\n return true;\n };\n /**\n * Publish (or queue, if not connected) an event to the Insights gateway.\n * @param {string} groupName - Event group name\n * @param {string} eventName - Event name\n * @param {object} payload - Event payload\n * @returns {boolean} true if queued or published, false if disconnect() called\n */\n InsightsPublisher.prototype.publish = function (groupName, eventName, payload) {\n if (this._ws !== null\n && (this._ws.readyState === this._WebSocket.CLOSING\n || this._ws.readyState === this._WebSocket.CLOSED)) {\n return false;\n }\n var publishOrEnqueue = typeof this._session === 'string'\n ? this._publish.bind(this)\n : this._eventQueue.push.bind(this._eventQueue);\n publishOrEnqueue({\n group: groupName,\n name: eventName,\n payload: payload,\n timestamp: Date.now(),\n type: 'event',\n version: 1\n });\n return true;\n };\n return InsightsPublisher;\n}(EventEmitter));\n/**\n * Start connecting to the Insights gateway.\n * @private\n * @param {InsightsPublisher} publisher\n * @param {string} name\n * @param {string} token\n * @param {string} sdkName\n * @param {string} sdkVersion\n * @param {string} roomSid\n * @param {string} participantSid\n * @param {InsightsPublisherOptions} options\n */\nfunction connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options) {\n publisher._connectTimestamp = Date.now();\n publisher._reconnectAttemptsLeft--;\n publisher._ws = new options.WebSocket(options.gateway);\n var ws = publisher._ws;\n ws.addEventListener('close', function (event) {\n if (event.code === WS_CLOSE_NORMAL) {\n publisher.emit('disconnected');\n return;\n }\n publisher.emit('disconnected', new Error(\"WebSocket Error \" + event.code + \": \" + event.reason));\n });\n ws.addEventListener('message', function (message) {\n handleConnectResponse(publisher, JSON.parse(message.data), options);\n });\n ws.addEventListener('open', function () {\n var connectRequest = {\n type: 'connect',\n token: token,\n version: 1\n };\n connectRequest.publisher = {\n name: sdkName,\n sdkVersion: sdkVersion,\n userAgent: options.userAgent,\n participantSid: participantSid,\n roomSid: roomSid,\n };\n if (browserdetection.isIpad()) {\n connectRequest.publisher = __assign(__assign({}, connectRequest.publisher), hardwareDevicePublisheriPad);\n }\n else if (browserdetection.isIphone()) {\n connectRequest.publisher = __assign(__assign({}, connectRequest.publisher), hardwareDevicePublisheriPhone);\n }\n ws.send(JSON.stringify(connectRequest));\n });\n}\n/**\n * Create the Insights Websocket gateway URL.\n * @param {string} environment\n * @param {string} realm\n * @returns {string}\n */\nfunction createGateway(environment, realm) {\n return environment === 'prod' ? \"wss://sdkgw.\" + realm + \".twilio.com\"\n : \"wss://sdkgw.\" + environment + \"-\" + realm + \".twilio.com\";\n}\n/**\n * Handle connect response from the Insights gateway.\n * @param {InsightsPublisher} publisher\n * @param {*} response\n * @param {InsightsPublisherOptions} options\n */\nfunction handleConnectResponse(publisher, response, options) {\n switch (response.type) {\n case 'connected':\n publisher._session = response.session;\n publisher._reconnectAttemptsLeft = options.maxReconnectAttempts;\n publisher._eventQueue.splice(0).forEach(publisher._publish, publisher);\n publisher.emit('connected');\n break;\n case 'error':\n publisher._ws.close();\n publisher.emit('disconnected', new Error(response.message));\n break;\n }\n}\n/**\n * Start re-connecting to the Insights gateway with an appropriate delay based\n * on InsightsPublisherOptions#reconnectIntervalMs.\n * @private\n * @param {InsightsPublisher} publisher\n * @param {string} token\n * @param {string} sdkName\n * @param {string} sdkVersion\n * @param {string} roomSid\n * @param {string} participantSid\n * @param {InsightsPublisherOptions} options\n */\nfunction reconnect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options) {\n var connectInterval = Date.now() - publisher._connectTimestamp;\n var timeToWait = options.reconnectIntervalMs - connectInterval;\n if (timeToWait > 0) {\n setTimeout(function () {\n connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options);\n }, timeToWait);\n return;\n }\n connect(publisher, token, sdkName, sdkVersion, roomSid, participantSid, options);\n}\n/**\n * The {@link InsightsPublisher} is connected to the gateway.\n * @event InsightsPublisher#connected\n */\n/**\n * The {@link InsightsPublisher} is disconnected from the gateway.\n * @event InsightsPublisher#disconnected\n * @param {Error} [error] - Optional error if disconnected unintentionally\n */\n/**\n * The {@link InsightsPublisher} is re-connecting to the gateway.\n * @event InsightsPublisher#reconnecting\n */\n/**\n * {@link InsightsPublisher} options.\n * @typedef {object} InsightsPublisherOptions\n * @property {string} [gateway=sdkgw.{environment}-{realm}.twilio.com] - Insights WebSocket gateway url\n * @property {number} [maxReconnectAttempts=5] - Max re-connect attempts\n * @property {number} [reconnectIntervalMs=50] - Re-connect interval in ms\n */\nmodule.exports = InsightsPublisher;\n//# sourceMappingURL=index.js.map","'use strict';\nvar isNonArrayObject = require('./').isNonArrayObject;\nvar _a = require('./constants'), E = _a.typeErrors, clientTrackSwitchOffControl = _a.clientTrackSwitchOffControl, videoContentPreferencesMode = _a.videoContentPreferencesMode, subscriptionMode = _a.subscriptionMode, trackPriority = _a.trackPriority, trackSwitchOffMode = _a.trackSwitchOffMode;\n/**\n * Validate the {@link BandwidthProfileOptions} object.\n * @param {BandwidthProfileOptions} bandwidthProfile\n * @returns {?Error} - null if valid, Error if not.\n */\nfunction validateBandwidthProfile(bandwidthProfile) {\n var error = validateObject(bandwidthProfile, 'options.bandwidthProfile');\n if (!bandwidthProfile || error) {\n return error;\n }\n error = validateObject(bandwidthProfile.video, 'options.bandwidthProfile.video', [\n { prop: 'contentPreferencesMode', values: Object.values(videoContentPreferencesMode) },\n { prop: 'dominantSpeakerPriority', values: Object.values(trackPriority) },\n { prop: 'maxSubscriptionBitrate', type: 'number' },\n { prop: 'maxTracks', type: 'number' },\n { prop: 'mode', values: Object.values(subscriptionMode) },\n { prop: 'clientTrackSwitchOffControl', values: Object.values(clientTrackSwitchOffControl) },\n { prop: 'trackSwitchOffMode', values: Object.values(trackSwitchOffMode) }\n ]);\n if (error) {\n return error;\n }\n if (bandwidthProfile.video) {\n // maxTracks is replaced by clientTrackSwitchOffControl.\n // throw an error if both are specified.\n if ('maxTracks' in bandwidthProfile.video && 'clientTrackSwitchOffControl' in bandwidthProfile.video) {\n return new TypeError('options.bandwidthProfile.video.maxTracks is deprecated. Use options.bandwidthProfile.video.clientTrackSwitchOffControl instead.');\n }\n // renderDimensions is replaced by contentPreferencesMode.\n // throw an error if both are specified.\n if ('renderDimensions' in bandwidthProfile.video && 'contentPreferencesMode' in bandwidthProfile.video) {\n return new TypeError('options.bandwidthProfile.video.renderDimensions is deprecated. Use options.bandwidthProfile.video.contentPreferencesMode instead.');\n }\n return validateRenderDimensions(bandwidthProfile.video.renderDimensions);\n }\n return null;\n}\n/**\n * Throw if the given track is not a {@link LocalAudioTrack}, a\n * {@link LocalVideoTrack} or a MediaStreamTrack.\n * @param {*} track\n * @param {object} options\n */\nfunction validateLocalTrack(track, options) {\n if (!(track instanceof options.LocalAudioTrack\n || track instanceof options.LocalDataTrack\n || track instanceof options.LocalVideoTrack\n || track instanceof options.MediaStreamTrack)) {\n /* eslint new-cap:0 */\n throw E.INVALID_TYPE('track', 'LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n }\n}\n/**\n * Validate an object. An object is valid if it is undefined or a non-null, non-array\n * object whose properties satisfy the specified data-type or value-range requirements.\n * @param {object} object - the object to be validated\n * @param {string} name - the object name to be used to build the error message, if invalid\n * @param {Array} [propChecks] - optional data-type or value-range requirements\n * for the object's properties\n * @returns {?Error} - null if object is valid, Error if not\n */\nfunction validateObject(object, name, propChecks) {\n if (propChecks === void 0) { propChecks = []; }\n // NOTE(mmalavalli): We determine that an undefined object is valid because this\n // means the parent object does not contain this object as a property, which is\n // a valid scenario.\n if (typeof object === 'undefined') {\n return null;\n }\n // NOTE(mmalavalli): We determine that if the object is null, or an Array, or\n // any other non-object type, then it is invalid.\n if (object === null || !isNonArrayObject(object)) {\n return E.INVALID_TYPE(name, 'object');\n }\n // NOTE(mmalavalli): We determine that the object is invalid if at least one of\n // its properties does not satisfy its data-type or value-range requirement.\n return propChecks.reduce(function (error, _a) {\n var prop = _a.prop, type = _a.type, values = _a.values;\n if (error || !(prop in object)) {\n return error;\n }\n var value = object[prop];\n if (type && typeof value !== type) {\n return E.INVALID_TYPE(name + \".\" + prop, type);\n }\n if (type === 'number' && isNaN(value)) {\n return E.INVALID_TYPE(name + \".\" + prop, type);\n }\n if (Array.isArray(values) && !values.includes(value)) {\n return E.INVALID_VALUE(name + \".\" + prop, values);\n }\n return error;\n }, null);\n}\n/**\n * Validates the renderDimensions field to be \"auto\" or {@link VideoRenderDimensions} object.\n * @param {string|VideoRenderDimensions} renderDimensions\n * @returns {?Error} - null if valid, Error if not.\n */\nfunction validateRenderDimensions(renderDimensions) {\n var name = 'options.bandwidthProfile.video.renderDimensions';\n var error = validateObject(renderDimensions, name);\n return renderDimensions ? error || Object.values(trackPriority).reduce(function (error, prop) {\n return error || validateObject(renderDimensions[prop], name + \".\" + prop, [\n { prop: 'height', type: 'number' },\n { prop: 'width', type: 'number' }\n ]);\n }, null) : error;\n}\nexports.validateBandwidthProfile = validateBandwidthProfile;\nexports.validateLocalTrack = validateLocalTrack;\nexports.validateObject = validateObject;\n//# sourceMappingURL=validate.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('../../eventemitter');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, valueToJSON = _a.valueToJSON;\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar nInstances = 0;\n/**\n * A {@link TrackPublication} represents a {@link Track} that\n * has been published to a {@link Room}.\n * @property {string} trackName - the published {@link Track}'s name\n * @property {Track.SID} trackSid - SID assigned to the published {@link Track}\n * @emits TrackPublication#trackDisabled\n * @emits TrackPublication#trackEnabled\n */\nvar TrackPublication = /** @class */ (function (_super) {\n __extends(TrackPublication, _super);\n /**\n * Construct a {@link TrackPublication}.\n * @param {string} trackName - the published {@link Track}'s name\n * @param {Track.SID} trackSid - SID assigned to the {@link Track}\n * @param {TrackPublicationOptions} options - {@link TrackPublication} options\n */\n function TrackPublication(trackName, trackSid, options) {\n var _this = _super.call(this) || this;\n options = Object.assign({\n logLevel: DEFAULT_LOG_LEVEL\n }, options);\n var logLevels = buildLogLevels(options.logLevel);\n Object.defineProperties(_this, {\n _instanceId: {\n value: nInstances++\n },\n _log: {\n value: options.log ? options.log.createLog('default', _this) : new Log('default', _this, logLevels, options.loggerName)\n },\n trackName: {\n enumerable: true,\n value: trackName\n },\n trackSid: {\n enumerable: true,\n value: trackSid\n }\n });\n return _this;\n }\n TrackPublication.prototype.toJSON = function () {\n return valueToJSON(this);\n };\n TrackPublication.prototype.toString = function () {\n return \"[TrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n return TrackPublication;\n}(EventEmitter));\n/**\n * The published {@link Track} was disabled.\n * @event TrackPublication#trackDisabled\n */\n/**\n * The published {@link Track} was enabled.\n * @event TrackPublication#trackEnabled\n */\n/**\n * A {@link LocalAudioTrackPublication} or a {@link RemoteAudioTrackPublication}.\n * @typedef {LocalAudioTrackPublication|RemoteAudioTrackPublication} AudioTrackPublication\n */\n/**\n * A {@link LocalDataTrackPublication} or a {@link RemoteDataTrackPublication}.\n * @typedef {LocalDataTrackPublication|RemoteDataTrackPublication} DataTrackPublication\n */\n/**\n * A {@link LocalVideoTrackPublication} or a {@link RemoteVideoTrackPublication}.\n * @typedef {LocalVideoTrackPublication|RemoteVideoTrackPublication} VideoTrackPublication\n */\n/**\n * {@link TrackPublication} options\n * @typedef {object} TrackPublicationOptions\n * @property {LogLevel|LogLevels} logLevel - Log level for 'media' modules\n */\nmodule.exports = TrackPublication;\n//# sourceMappingURL=trackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar EventEmitter = require('./eventemitter');\nvar RemoteAudioTrack = require('./media/track/remoteaudiotrack');\nvar RemoteAudioTrackPublication = require('./media/track/remoteaudiotrackpublication');\nvar RemoteDataTrack = require('./media/track/remotedatatrack');\nvar RemoteDataTrackPublication = require('./media/track/remotedatatrackpublication');\nvar RemoteVideoTrack = require('./media/track/remotevideotrack');\nvar RemoteVideoTrackPublication = require('./media/track/remotevideotrackpublication');\nvar util = require('./util');\nvar nInstances = 0;\n/**\n * {@link NetworkQualityLevel} is a value from 0–5, inclusive, representing the\n * quality of a network connection.\n * @typedef {number} NetworkQualityLevel\n */\n/**\n * @extends EventEmitter\n * @property {Map} audioTracks -\n * The {@link Participant}'s {@link AudioTrackPublication}s\n * @property {Map} dataTracks -\n * The {@link Participant}'s {@link DataTrackPublication}s.\n * @property {Participant.Identity} identity - The identity of the {@link Participant}\n * @property {?NetworkQualityLevel} networkQualityLevel - The\n * {@link Participant}'s current {@link NetworkQualityLevel}, if any\n * @property {?NetworkQualityStats} networkQualityStats - The\n * {@link Participant}'s current {@link NetworkQualityStats}, if any\n * @property {Participant.SID} sid - The {@link Participant}'s SID\n * @property {string} state - \"connected\", \"disconnected\" or \"reconnecting\"\n * @property {Map} tracks -\n * The {@link Participant}'s {@link TrackPublication}s\n * @property {Map} videoTracks -\n * The {@link Participant}'s {@link VideoTrackPublication}s\n * @emits Participant#disconnected\n * @emits Participant#networkQualityLevelChanged\n * @emits Participant#reconnected\n * @emits Participant#reconnecting\n * @emits Participant#trackDimensionsChanged\n * @emits Participant#trackStarted\n */\nvar Participant = /** @class */ (function (_super) {\n __extends(Participant, _super);\n /**\n * Construct a {@link Participant}.\n * @param {ParticipantSignaling} signaling\n * @param {object} [options]\n */\n function Participant(signaling, options) {\n var _this = _super.call(this) || this;\n options = Object.assign({\n RemoteAudioTrack: RemoteAudioTrack,\n RemoteAudioTrackPublication: RemoteAudioTrackPublication,\n RemoteDataTrack: RemoteDataTrack,\n RemoteDataTrackPublication: RemoteDataTrackPublication,\n RemoteVideoTrack: RemoteVideoTrack,\n RemoteVideoTrackPublication: RemoteVideoTrackPublication,\n tracks: []\n }, options);\n var indexed = indexTracksById(options.tracks);\n var log = options.log.createLog('default', _this);\n var audioTracks = new Map(indexed.audioTracks);\n var dataTracks = new Map(indexed.dataTracks);\n var tracks = new Map(indexed.tracks);\n var videoTracks = new Map(indexed.videoTracks);\n Object.defineProperties(_this, {\n _RemoteAudioTrack: {\n value: options.RemoteAudioTrack\n },\n _RemoteAudioTrackPublication: {\n value: options.RemoteAudioTrackPublication\n },\n _RemoteDataTrack: {\n value: options.RemoteDataTrack\n },\n _RemoteDataTrackPublication: {\n value: options.RemoteDataTrackPublication\n },\n _RemoteVideoTrack: {\n value: options.RemoteVideoTrack\n },\n _RemoteVideoTrackPublication: {\n value: options.RemoteVideoTrackPublication\n },\n _audioTracks: {\n value: audioTracks\n },\n _dataTracks: {\n value: dataTracks\n },\n _instanceId: {\n value: ++nInstances\n },\n _clientTrackSwitchOffControl: {\n value: options.clientTrackSwitchOffControl,\n },\n _contentPreferencesMode: {\n value: options.contentPreferencesMode,\n },\n _log: {\n value: log\n },\n _signaling: {\n value: signaling\n },\n _tracks: {\n value: tracks\n },\n _trackEventReemitters: {\n value: new Map()\n },\n _trackPublicationEventReemitters: {\n value: new Map()\n },\n _trackSignalingUpdatedEventCallbacks: {\n value: new Map()\n },\n _videoTracks: {\n value: videoTracks\n },\n audioTracks: {\n enumerable: true,\n value: new Map()\n },\n dataTracks: {\n enumerable: true,\n value: new Map()\n },\n identity: {\n enumerable: true,\n get: function () {\n return signaling.identity;\n }\n },\n networkQualityLevel: {\n enumerable: true,\n get: function () {\n return signaling.networkQualityLevel;\n }\n },\n networkQualityStats: {\n enumerable: true,\n get: function () {\n return signaling.networkQualityStats;\n }\n },\n sid: {\n enumerable: true,\n get: function () {\n return signaling.sid;\n }\n },\n state: {\n enumerable: true,\n get: function () {\n return signaling.state;\n }\n },\n tracks: {\n enumerable: true,\n value: new Map()\n },\n videoTracks: {\n enumerable: true,\n value: new Map()\n }\n });\n _this._tracks.forEach(reemitTrackEvents.bind(null, _this));\n signaling.on('networkQualityLevelChanged', function () {\n return _this.emit('networkQualityLevelChanged', _this.networkQualityLevel, _this.networkQualityStats &&\n (_this.networkQualityStats.audio || _this.networkQualityStats.video)\n ? _this.networkQualityStats\n : null);\n });\n reemitSignalingStateChangedEvents(_this, signaling);\n log.info(\"Created a new Participant\" + (_this.identity ? \": \" + _this.identity : ''));\n return _this;\n }\n /**\n * Get the {@link RemoteTrack} events to re-emit.\n * @private\n * @returns {Array>} events\n */\n Participant.prototype._getTrackEvents = function () {\n return [\n ['dimensionsChanged', 'trackDimensionsChanged'],\n ['message', 'trackMessage'],\n ['started', 'trackStarted']\n ];\n };\n /**\n * @private\n */\n Participant.prototype._getTrackPublicationEvents = function () {\n return [];\n };\n Participant.prototype.toString = function () {\n return \"[Participant #\" + this._instanceId + \": \" + this.sid + \"]\";\n };\n /**\n * @private\n * @param {RemoteTrack} track\n * @param {Track.ID} id\n * @returns {?RemoteTrack}\n */\n Participant.prototype._addTrack = function (track, id) {\n var log = this._log;\n if (this._tracks.has(id)) {\n return null;\n }\n this._tracks.set(id, track);\n var tracksByKind = {\n audio: this._audioTracks,\n video: this._videoTracks,\n data: this._dataTracks\n }[track.kind];\n tracksByKind.set(id, track);\n reemitTrackEvents(this, track, id);\n log.info(\"Added a new \" + util.trackClass(track) + \":\", id);\n log.debug(util.trackClass(track) + \":\", track);\n return track;\n };\n /**\n * @private\n * @param {RemoteTrackPublication} publication\n * @returns {?RemoteTrackPublication}\n */\n Participant.prototype._addTrackPublication = function (publication) {\n var log = this._log;\n if (this.tracks.has(publication.trackSid)) {\n return null;\n }\n this.tracks.set(publication.trackSid, publication);\n var trackPublicationsByKind = {\n audio: this.audioTracks,\n data: this.dataTracks,\n video: this.videoTracks\n }[publication.kind];\n trackPublicationsByKind.set(publication.trackSid, publication);\n reemitTrackPublicationEvents(this, publication);\n log.info(\"Added a new \" + util.trackPublicationClass(publication) + \":\", publication.trackSid);\n log.debug(util.trackPublicationClass(publication) + \":\", publication);\n return publication;\n };\n /**\n * @private\n */\n Participant.prototype._handleTrackSignalingEvents = function () {\n var _a = this, log = _a._log, clientTrackSwitchOffControl = _a._clientTrackSwitchOffControl, contentPreferencesMode = _a._contentPreferencesMode;\n var self = this;\n if (this.state === 'disconnected') {\n return;\n }\n var RemoteAudioTrack = this._RemoteAudioTrack;\n var RemoteAudioTrackPublication = this._RemoteAudioTrackPublication;\n var RemoteVideoTrack = this._RemoteVideoTrack;\n var RemoteVideoTrackPublication = this._RemoteVideoTrackPublication;\n var RemoteDataTrack = this._RemoteDataTrack;\n var RemoteDataTrackPublication = this._RemoteDataTrackPublication;\n var participantSignaling = this._signaling;\n function trackSignalingAdded(signaling) {\n var RemoteTrackPublication = {\n audio: RemoteAudioTrackPublication,\n data: RemoteDataTrackPublication,\n video: RemoteVideoTrackPublication\n }[signaling.kind];\n var publication = new RemoteTrackPublication(signaling, { log: log });\n self._addTrackPublication(publication);\n var isSubscribed = signaling.isSubscribed;\n if (isSubscribed) {\n trackSignalingSubscribed(signaling);\n }\n self._trackSignalingUpdatedEventCallbacks.set(signaling.sid, function () {\n if (isSubscribed !== signaling.isSubscribed) {\n isSubscribed = signaling.isSubscribed;\n if (isSubscribed) {\n trackSignalingSubscribed(signaling);\n return;\n }\n trackSignalingUnsubscribed(signaling);\n }\n });\n signaling.on('updated', self._trackSignalingUpdatedEventCallbacks.get(signaling.sid));\n }\n function trackSignalingRemoved(signaling) {\n if (signaling.isSubscribed) {\n signaling.setTrackTransceiver(null);\n }\n var updated = self._trackSignalingUpdatedEventCallbacks.get(signaling.sid);\n if (updated) {\n signaling.removeListener('updated', updated);\n self._trackSignalingUpdatedEventCallbacks.delete(signaling.sid);\n }\n var publication = self.tracks.get(signaling.sid);\n if (publication) {\n self._removeTrackPublication(publication);\n }\n }\n function trackSignalingSubscribed(signaling) {\n var isEnabled = signaling.isEnabled, name = signaling.name, kind = signaling.kind, sid = signaling.sid, trackTransceiver = signaling.trackTransceiver, isSwitchedOff = signaling.isSwitchedOff;\n var RemoteTrack = {\n audio: RemoteAudioTrack,\n video: RemoteVideoTrack,\n data: RemoteDataTrack\n }[kind];\n var publication = self.tracks.get(sid);\n // NOTE(mroberts): It should never be the case that the TrackSignaling and\n // MediaStreamTrack or DataTrackReceiver kinds disagree; however, just in\n // case, we handle it here.\n if (!RemoteTrack || kind !== trackTransceiver.kind) {\n return;\n }\n var options = { log: log, name: name, clientTrackSwitchOffControl: clientTrackSwitchOffControl, contentPreferencesMode: contentPreferencesMode };\n var setPriority = function (newPriority) { return participantSignaling.updateSubscriberTrackPriority(sid, newPriority); };\n var setRenderHint = function (renderHint) {\n if (signaling.isSubscribed) {\n participantSignaling.updateTrackRenderHint(sid, renderHint);\n }\n };\n var track = kind === 'data'\n ? new RemoteTrack(sid, trackTransceiver, options)\n : new RemoteTrack(sid, trackTransceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options);\n self._addTrack(track, publication, trackTransceiver.id);\n }\n function trackSignalingUnsubscribed(signaling) {\n var _a = __read(Array.from(self._tracks.entries()).find(function (_a) {\n var _b = __read(_a, 2), track = _b[1];\n return track.sid === signaling.sid;\n }), 2), id = _a[0], track = _a[1];\n var publication = self.tracks.get(signaling.sid);\n if (track) {\n self._removeTrack(track, publication, id);\n }\n }\n participantSignaling.on('trackAdded', trackSignalingAdded);\n participantSignaling.on('trackRemoved', trackSignalingRemoved);\n participantSignaling.tracks.forEach(trackSignalingAdded);\n participantSignaling.on('stateChanged', function stateChanged(state) {\n if (state === 'disconnected') {\n log.debug('Removing event listeners');\n participantSignaling.removeListener('stateChanged', stateChanged);\n participantSignaling.removeListener('trackAdded', trackSignalingAdded);\n participantSignaling.removeListener('trackRemoved', trackSignalingRemoved);\n }\n else if (state === 'connected') {\n // NOTE(mmalavalli): Any transition to \"connected\" here is a result of\n // successful signaling reconnection, and not a first-time establishment\n // of the signaling connection.\n log.info('reconnected');\n // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n // Do not signal public events synchronously with lock held.\n setTimeout(function () { return self.emit('reconnected'); }, 0);\n }\n });\n };\n /**\n * @private\n * @param {RemoteTrack} track\n * @param {Track.ID} id\n * @returns {?RemoteTrack}\n */\n Participant.prototype._removeTrack = function (track, id) {\n if (!this._tracks.has(id)) {\n return null;\n }\n this._tracks.delete(id);\n var tracksByKind = {\n audio: this._audioTracks,\n video: this._videoTracks,\n data: this._dataTracks\n }[track.kind];\n tracksByKind.delete(id);\n var reemitters = this._trackEventReemitters.get(id) || new Map();\n reemitters.forEach(function (reemitter, event) {\n track.removeListener(event, reemitter);\n });\n var log = this._log;\n log.info(\"Removed a \" + util.trackClass(track) + \":\", id);\n log.debug(util.trackClass(track) + \":\", track);\n return track;\n };\n /**\n * @private\n * @param {RemoteTrackPublication} publication\n * @returns {?RemoteTrackPublication}\n */\n Participant.prototype._removeTrackPublication = function (publication) {\n publication = this.tracks.get(publication.trackSid);\n if (!publication) {\n return null;\n }\n this.tracks.delete(publication.trackSid);\n var trackPublicationsByKind = {\n audio: this.audioTracks,\n data: this.dataTracks,\n video: this.videoTracks\n }[publication.kind];\n trackPublicationsByKind.delete(publication.trackSid);\n var reemitters = this._trackPublicationEventReemitters.get(publication.trackSid) || new Map();\n reemitters.forEach(function (reemitter, event) {\n publication.removeListener(event, reemitter);\n });\n var log = this._log;\n log.info(\"Removed a \" + util.trackPublicationClass(publication) + \":\", publication.trackSid);\n log.debug(util.trackPublicationClass(publication) + \":\", publication);\n return publication;\n };\n Participant.prototype.toJSON = function () {\n return util.valueToJSON(this);\n };\n return Participant;\n}(EventEmitter));\n/**\n * A {@link Participant.SID} is a 34-character string starting with \"PA\"\n * that uniquely identifies a {@link Participant}.\n * @type string\n * @typedef Participant.SID\n */\n/**\n * A {@link Participant.Identity} is a string that identifies a\n * {@link Participant}. You can think of it like a name.\n * @typedef {string} Participant.Identity\n */\n/**\n * The {@link Participant} has disconnected.\n * @param {Participant} participant - The {@link Participant} that disconnected.\n * @event Participant#disconnected\n */\n/**\n * The {@link Participant}'s {@link NetworkQualityLevel} changed.\n * @param {NetworkQualityLevel} networkQualityLevel - The new\n * {@link NetworkQualityLevel}\n * @param {?NetworkQualityStats} networkQualityStats - The {@link NetworkQualityStats}\n * based on which {@link NetworkQualityLevel} is calculated, if any\n * @event Participant#networkQualityLevelChanged\n */\n/**\n * The {@link Participant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event Participant#reconnected\n */\n/**\n * The {@link Participant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event Participant#reconnecting\n */\n/**\n * One of the {@link Participant}'s {@link VideoTrack}'s dimensions changed.\n * @param {VideoTrack} track - The {@link VideoTrack} whose dimensions changed\n * @event Participant#trackDimensionsChanged\n */\n/**\n * One of the {@link Participant}'s {@link Track}s started.\n * @param {Track} track - The {@link Track} that started\n * @event Participant#trackStarted\n */\n/**\n * Indexed {@link Track}s by {@link Track.ID}.\n * @typedef {object} IndexedTracks\n * @property {Array<{0: Track.ID, 1: AudioTrack}>} audioTracks - Indexed\n * {@link AudioTrack}s\n * @property {Array<{0: Track.ID, 1: DataTrack}>} dataTracks - Indexed\n * {@link DataTrack}s\n * @property {Array<{0: Track.ID, 1: Track}>} tracks - Indexed {@link Track}s\n * @property {Array<{0: Track.ID, 1: VideoTrack}>} videoTracks - Indexed\n * {@link VideoTrack}s\n * @private\n */\n/**\n * Index tracks by {@link Track.ID}.\n * @param {Array} tracks\n * @returns {IndexedTracks}\n * @private\n */\nfunction indexTracksById(tracks) {\n var indexedTracks = tracks.map(function (track) { return [track.id, track]; });\n var indexedAudioTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'audio'; });\n var indexedVideoTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'video'; });\n var indexedDataTracks = indexedTracks.filter(function (keyValue) { return keyValue[1].kind === 'data'; });\n return {\n audioTracks: indexedAudioTracks,\n dataTracks: indexedDataTracks,\n tracks: indexedTracks,\n videoTracks: indexedVideoTracks\n };\n}\n/**\n * Re-emit {@link ParticipantSignaling} 'stateChanged' events.\n * @param {Participant} participant\n * @param {ParticipantSignaling} signaling\n * @private\n */\nfunction reemitSignalingStateChangedEvents(participant, signaling) {\n var log = participant._log;\n if (participant.state === 'disconnected') {\n return;\n }\n // Reemit state transition events from the ParticipantSignaling.\n signaling.on('stateChanged', function stateChanged(state) {\n log.debug('Transitioned to state:', state);\n participant.emit(state, participant);\n if (state === 'disconnected') {\n log.debug('Removing Track event reemitters');\n signaling.removeListener('stateChanged', stateChanged);\n participant._tracks.forEach(function (track) {\n var reemitters = participant._trackEventReemitters.get(track.id);\n if (track && reemitters) {\n reemitters.forEach(function (reemitter, event) {\n track.removeListener(event, reemitter);\n });\n }\n });\n // eslint-disable-next-line no-warning-comments\n // TODO(joma): Removing this introduced unit test failures in the RemoteParticipant.\n // Investigate further before removing.\n signaling.tracks.forEach(function (trackSignaling) {\n var track = participant._tracks.get(trackSignaling.id);\n var reemitters = participant._trackEventReemitters.get(trackSignaling.id);\n if (track && reemitters) {\n reemitters.forEach(function (reemitter, event) {\n track.removeListener(event, reemitter);\n });\n }\n });\n participant._trackEventReemitters.clear();\n participant.tracks.forEach(function (publication) {\n participant._trackPublicationEventReemitters.get(publication.trackSid)\n .forEach(function (reemitter, event) {\n publication.removeListener(event, reemitter);\n });\n });\n participant._trackPublicationEventReemitters.clear();\n }\n });\n}\n/**\n * Re-emit {@link Track} events.\n * @param {Participant} participant\n * @param {Track} track\n * @param {Track.ID} id\n * @private\n */\nfunction reemitTrackEvents(participant, track, id) {\n var trackEventReemitters = new Map();\n if (participant.state === 'disconnected') {\n return;\n }\n participant._getTrackEvents().forEach(function (eventPair) {\n var trackEvent = eventPair[0];\n var participantEvent = eventPair[1];\n trackEventReemitters.set(trackEvent, function () {\n var args = [participantEvent].concat([].slice.call(arguments));\n return participant.emit.apply(participant, __spreadArray([], __read(args)));\n });\n track.on(trackEvent, trackEventReemitters.get(trackEvent));\n });\n participant._trackEventReemitters.set(id, trackEventReemitters);\n}\n/**\n * Re-emit {@link TrackPublication} events.\n * @private\n * @param {Participant} participant\n * @param {TrackPublication} publication\n */\nfunction reemitTrackPublicationEvents(participant, publication) {\n var publicationEventReemitters = new Map();\n if (participant.state === 'disconnected') {\n return;\n }\n participant._getTrackPublicationEvents().forEach(function (_a) {\n var _b = __read(_a, 2), publicationEvent = _b[0], participantEvent = _b[1];\n publicationEventReemitters.set(publicationEvent, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n participant.emit.apply(participant, __spreadArray(__spreadArray([participantEvent], __read(args)), [publication]));\n });\n publication.on(publicationEvent, publicationEventReemitters.get(publicationEvent));\n });\n participant._trackPublicationEventReemitters.set(publication.trackSid, publicationEventReemitters);\n}\nmodule.exports = Participant;\n//# sourceMappingURL=participant.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nfunction mixinRemoteMediaTrack(AudioOrVideoTrack) {\n /**\n * A {@link RemoteMediaTrack} represents a {@link MediaTrack} published to a\n * {@link Room} by a {@link RemoteParticipant}.\n * @property {boolean} isEnabled - Whether the {@link RemoteMediaTrack} is enabled\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteMediaTrack} is switched off\n * @property {Track.SID} sid - The SID assigned to the {@link RemoteMediaTrack}\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteMediaTrack}\n * @emits RemoteMediaTrack#disabled\n * @emits RemoteMediaTrack#enabled\n * @emits RemoteMediaTrack#switchedOff\n * @emits RemoteMediaTrack#switchedOn\n */\n return /** @class */ (function (_super) {\n __extends(RemoteMediaTrack, _super);\n /**\n * Construct a {@link RemoteMediaTrack}.\n * @param {Track.SID} sid\n * @param {MediaTrackReceiver} mediaTrackReceiver\n * @param {boolean} isEnabled\n @param {boolean} isSwitchedOff\n * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n * {@link Track.Priority} of the {@link RemoteMediaTrack}\n * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n * @param {{log: Log, name: ?string}} options\n */\n function RemoteMediaTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n var _this = this;\n options = Object.assign({\n // NOTE(mpatwardhan): WebKit bug: 212780 sometimes causes the audio/video elements to stay paused when safari\n // regains foreground. To workaround it, when safari gains foreground - we will play any elements that were\n // playing before safari lost foreground.\n workaroundWebKitBug212780: isIOS()\n && typeof document === 'object'\n && typeof document.addEventListener === 'function'\n && typeof document.visibilityState === 'string'\n }, options);\n _this = _super.call(this, mediaTrackReceiver, options) || this;\n Object.defineProperties(_this, {\n _isEnabled: {\n value: isEnabled,\n writable: true\n },\n _isSwitchedOff: {\n value: isSwitchedOff,\n writable: true\n },\n _priority: {\n value: null,\n writable: true\n },\n _setPriority: {\n value: setPriority\n },\n _setRenderHint: {\n value: function (renderHint) {\n _this._log.debug('updating render hint:', renderHint);\n setRenderHint(renderHint);\n }\n },\n isEnabled: {\n enumerable: true,\n get: function () {\n return this._isEnabled;\n }\n },\n isSwitchedOff: {\n enumerable: true,\n get: function () {\n return this._isSwitchedOff;\n }\n },\n priority: {\n enumerable: true,\n get: function () {\n return this._priority;\n }\n },\n sid: {\n enumerable: true,\n value: sid\n },\n _workaroundWebKitBug212780: {\n value: options.workaroundWebKitBug212780\n },\n _workaroundWebKitBug212780Cleanup: {\n value: null,\n writable: true\n }\n });\n return _this;\n }\n /**\n * Update the subscribe {@link Track.Priority} of the {@link RemoteMediaTrack}.\n * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n * If null, then the subscribe {@link Track.Priority} is cleared, which\n * means the {@link Track.Priority} set by the publisher is now the effective priority.\n * @returns {this}\n * @throws {RangeError}\n */\n RemoteMediaTrack.prototype.setPriority = function (priority) {\n var priorityValues = __spreadArray([null], __read(Object.values(trackPriority)));\n if (!priorityValues.includes(priority)) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_VALUE('priority', priorityValues);\n }\n if (this._priority !== priority) {\n this._priority = priority;\n this._setPriority(priority);\n }\n return this;\n };\n /**\n * @private\n * @param {boolean} isEnabled\n */\n RemoteMediaTrack.prototype._setEnabled = function (isEnabled) {\n if (this._isEnabled !== isEnabled) {\n this._isEnabled = isEnabled;\n this.emit(this._isEnabled ? 'enabled' : 'disabled', this);\n }\n };\n /**\n * @private\n * @param {boolean} isSwitchedOff\n */\n RemoteMediaTrack.prototype._setSwitchedOff = function (isSwitchedOff) {\n if (this._isSwitchedOff !== isSwitchedOff) {\n this._isSwitchedOff = isSwitchedOff;\n this.emit(isSwitchedOff ? 'switchedOff' : 'switchedOn', this);\n }\n };\n RemoteMediaTrack.prototype.attach = function (el) {\n var result = _super.prototype.attach.call(this, el);\n if (this.mediaStreamTrack.enabled !== true) {\n // NOTE(mpatwardhan): we disable mediaStreamTrack when there\n // are no attachments to it (see notes below). Now that there\n // are attachments re-enable the track.\n this.mediaStreamTrack.enabled = true;\n if (this.processedTrack) {\n this.processedTrack.enabled = true;\n }\n // NOTE(csantos): since remote tracks disables/enables the mediaStreamTrack,\n // captureFrames stops along with it. We need to start it again after re-enabling.\n // See attach/detach methods in this class and in VideoTrack class.\n if (this.processor) {\n this._captureFrames();\n }\n }\n if (this._workaroundWebKitBug212780) {\n this._workaroundWebKitBug212780Cleanup = this._workaroundWebKitBug212780Cleanup\n || playIfPausedWhileInBackground(this);\n }\n return result;\n };\n RemoteMediaTrack.prototype.detach = function (el) {\n var result = _super.prototype.detach.call(this, el);\n if (this._attachments.size === 0) {\n // NOTE(mpatwardhan): chrome continues playing webrtc audio\n // track even after audio element is removed from the DOM.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=749928\n // to workaround: here disable the track when\n // there are no elements attached to it.\n this.mediaStreamTrack.enabled = false;\n if (this.processedTrack) {\n this.processedTrack.enabled = false;\n }\n if (this._workaroundWebKitBug212780Cleanup) {\n // unhook visibility change\n this._workaroundWebKitBug212780Cleanup();\n this._workaroundWebKitBug212780Cleanup = null;\n }\n }\n return result;\n };\n return RemoteMediaTrack;\n }(AudioOrVideoTrack));\n}\nfunction playIfPausedWhileInBackground(remoteMediaTrack) {\n var log = remoteMediaTrack._log, kind = remoteMediaTrack.kind;\n function onVisibilityChanged(isVisible) {\n if (!isVisible) {\n return;\n }\n remoteMediaTrack._attachments.forEach(function (el) {\n var shim = remoteMediaTrack._elShims.get(el);\n var isInadvertentlyPaused = el.paused && shim && !shim.pausedIntentionally();\n if (isInadvertentlyPaused) {\n log.info(\"Playing inadvertently paused <\" + kind + \"> element\");\n log.debug('Element:', el);\n log.debug('RemoteMediaTrack:', remoteMediaTrack);\n el.play().then(function () {\n log.info(\"Successfully played inadvertently paused <\" + kind + \"> element\");\n log.debug('Element:', el);\n log.debug('RemoteMediaTrack:', remoteMediaTrack);\n }).catch(function (err) {\n log.warn(\"Error while playing inadvertently paused <\" + kind + \"> element:\", { err: err, el: el, remoteMediaTrack: remoteMediaTrack });\n });\n }\n });\n }\n // NOTE(mpatwardhan): listen for document visibility callback on phase 2.\n // this ensures that any LocalMediaTrack's restart (which listen on phase 1) gets executed\n // first. This order is important because we `play` tracks in the callback, and\n // play can fail on safari if audio is not being captured.\n documentVisibilityMonitor.onVisibilityChange(2, onVisibilityChanged);\n return function () {\n documentVisibilityMonitor.offVisibilityChange(2, onVisibilityChanged);\n };\n}\n/**\n * A {@link RemoteMediaTrack} was disabled.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n * disabled\n * @event RemoteMediaTrack#disabled\n */\n/**\n * A {@link RemoteMediaTrack} was enabled.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n * enabled\n * @event RemoteMediaTrack#enabled\n */\n/**\n * A {@link RemoteMediaTrack} was switched off.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n * switched off\n * @event RemoteMediaTrack#switchedOff\n */\n/**\n * A {@link RemoteMediaTrack} was switched on.\n * @param {RemoteMediaTrack} track - The {@link RemoteMediaTrack} that was\n * switched on\n * @event RemoteMediaTrack#switchedOn\n */\n/**\n * A {@link ClientRenderHint} object specifies track dimensions and /enabled disable state.\n * This state will be used by the server(SFU) to determine bandwidth allocation for the track,\n * and turn it on or off as needed.\n * @typedef {object} ClientRenderHint\n * @property {boolean} [enabled] - track is enabled or disabled. defaults to disabled.\n * @property {VideoTrack.Dimensions} [renderDimensions] - Optional parameter to specify the desired\n * render dimensions of {@link RemoteVideoTrack}s. This property must be specified if enabled=true\n */\nmodule.exports = mixinRemoteMediaTrack;\n//# sourceMappingURL=remotemediatrack.js.map","'use strict';\nvar LocalAudioTrackStats = require('./localaudiotrackstats');\nvar LocalVideoTrackStats = require('./localvideotrackstats');\nvar RemoteAudioTrackStats = require('./remoteaudiotrackstats');\nvar RemoteVideoTrackStats = require('./remotevideotrackstats');\n/**\n * Statistics report for an RTCPeerConnection.\n * @property {string} peerConnectionId - ID of the RTCPeerConnection\n * @property {Array} localAudioTrackStats - List of {@link LocalAudioTrackStats}\n * @property {Array} localVideoTrackStats - List of {@link LocalVideoTrackStats}\n * @property {Array} remoteAudioTrackStats - List of {@link RemoteAudioTrackStats}\n * @property {Array} remoteVideoTrackStats - List of {@link RemoteVideoTrackStats}\n */\nvar StatsReport = /** @class */ (function () {\n /**\n * @param {string} peerConnectionId - RTCPeerConnection ID\n * @param {StandardizedStatsResponse} statsResponse\n * @param {boolean} prepareForInsights - if report is being prepared to send to insights.\n */\n function StatsReport(peerConnectionId, statsResponse, prepareForInsights) {\n if (typeof peerConnectionId !== 'string') {\n throw new Error('RTCPeerConnection id must be a string');\n }\n Object.defineProperties(this, {\n peerConnectionId: {\n value: peerConnectionId,\n enumerable: true\n },\n localAudioTrackStats: {\n value: statsResponse.localAudioTrackStats.map(function (report) { return new LocalAudioTrackStats(report.trackId, report, prepareForInsights); }),\n enumerable: true\n },\n localVideoTrackStats: {\n value: statsResponse.localVideoTrackStats.map(function (report) { return new LocalVideoTrackStats(report.trackId, report, prepareForInsights); }),\n enumerable: true\n },\n remoteAudioTrackStats: {\n value: statsResponse.remoteAudioTrackStats.map(function (report) { return new RemoteAudioTrackStats(report.trackId, report); }),\n enumerable: true\n },\n remoteVideoTrackStats: {\n value: statsResponse.remoteVideoTrackStats.map(function (report) { return new RemoteVideoTrackStats(report.trackId, report); }),\n enumerable: true\n }\n });\n }\n return StatsReport;\n}());\nmodule.exports = StatsReport;\n//# sourceMappingURL=statsreport.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TrackStats = require('./trackstats');\n/**\n * Statistics for a {@link LocalTrack}.\n * @extends TrackStats\n * @property {?number} bytesSent - Number of bytes sent\n * @property {?number} packetsSent - Number of packets sent\n * @property {?number} roundTripTime - Round trip time in milliseconds\n */\nvar LocalTrackStats = /** @class */ (function (_super) {\n __extends(LocalTrackStats, _super);\n /**\n * @param {string} trackId - {@link LocalTrack} ID\n * @param {StandardizedTrackStatsReport} statsReport\n * @param {boolean} prepareForInsights\n */\n function LocalTrackStats(trackId, statsReport, prepareForInsights) {\n var _this = _super.call(this, trackId, statsReport) || this;\n Object.defineProperties(_this, {\n bytesSent: {\n value: typeof statsReport.bytesSent === 'number'\n ? statsReport.bytesSent\n : prepareForInsights ? 0 : null,\n enumerable: true\n },\n packetsSent: {\n value: typeof statsReport.packetsSent === 'number'\n ? statsReport.packetsSent\n : prepareForInsights ? 0 : null,\n enumerable: true\n },\n roundTripTime: {\n value: typeof statsReport.roundTripTime === 'number'\n ? statsReport.roundTripTime\n : prepareForInsights ? 0 : null,\n enumerable: true\n }\n });\n return _this;\n }\n return LocalTrackStats;\n}(TrackStats));\nmodule.exports = LocalTrackStats;\n//# sourceMappingURL=localtrackstats.js.map","'use strict';\n/**\n * Statistics for a {@link Track}.\n * @property {Track.ID} trackId - The {@link Track} ID\n * @property {Track.SID} trackSid - The {@link Track}'s SID when published in\n * in a {@link Room}\n * @property {number} timestamp - A Unix timestamp in milliseconds indicating\n * when the {@link TrackStats} were gathered\n * @property {string} ssrc - The {@link Track}'s SSRC when transmitted over the\n * RTCPeerConnection\n * @property {?number} packetsLost - The number of packets lost\n * @property {?string} codec - The name of the codec used to encode the\n * {@link Track}'s media\n */\nvar TrackStats = /** @class */ (function () {\n /**\n * @param {string} trackId - {@link Track} ID\n * @param {StandardizedTrackStatsReport} statsReport\n */\n function TrackStats(trackId, statsReport) {\n if (typeof trackId !== 'string') {\n throw new Error('Track id must be a string');\n }\n Object.defineProperties(this, {\n trackId: {\n value: trackId,\n enumerable: true\n },\n trackSid: {\n value: statsReport.trackSid,\n enumerable: true\n },\n timestamp: {\n value: statsReport.timestamp,\n enumerable: true\n },\n ssrc: {\n value: statsReport.ssrc,\n enumerable: true\n },\n packetsLost: {\n value: typeof statsReport.packetsLost === 'number'\n ? statsReport.packetsLost\n : null,\n enumerable: true\n },\n codec: {\n value: typeof statsReport.codecName === 'string'\n ? statsReport.codecName\n : null,\n enumerable: true\n }\n });\n }\n return TrackStats;\n}());\nmodule.exports = TrackStats;\n//# sourceMappingURL=trackstats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TrackStats = require('./trackstats');\n/**\n * Statistics for a remote {@link Track}.\n * @extends TrackStats\n * @property {?number} bytesReceived - Number of bytes received\n * @property {?number} packetsReceived - Number of packets received\n */\nvar RemoteTrackStats = /** @class */ (function (_super) {\n __extends(RemoteTrackStats, _super);\n /*\n * @param {string} trackId - {@link Track} ID\n * @param {StandardizedTrackStatsReport} statsReport\n */\n function RemoteTrackStats(trackId, statsReport) {\n var _this = _super.call(this, trackId, statsReport) || this;\n Object.defineProperties(_this, {\n bytesReceived: {\n value: typeof statsReport.bytesReceived === 'number'\n ? statsReport.bytesReceived\n : null,\n enumerable: true\n },\n packetsReceived: {\n value: typeof statsReport.packetsReceived === 'number'\n ? statsReport.packetsReceived\n : null,\n enumerable: true\n }\n });\n return _this;\n }\n return RemoteTrackStats;\n}(TrackStats));\nmodule.exports = RemoteTrackStats;\n//# sourceMappingURL=remotetrackstats.js.map","/**\n * Expose `Backoff`.\n */\nvar Backoff = /** @class */ (function () {\n /**\n * Construct a {@link Backoff}.\n * @param {object} options\n * @property {number} min - Initial timeout in milliseconds [100]\n * @property {number} max - Max timeout [10000]\n * @property {boolean} jitter - Apply jitter [0]\n * @property {number} factor - Multiplication factor for Backoff operation [2]\n */\n function Backoff(options) {\n Object.defineProperties(this, {\n _min: {\n value: options.min || 100\n },\n _max: {\n value: options.max || 10000\n },\n _jitter: {\n value: options.jitter > 0 && options.jitter <= 1 ? options.jitter : 0\n },\n _factor: {\n value: options.factor || 2\n },\n _attempts: {\n value: 0,\n writable: true\n },\n _duration: {\n enumerable: false,\n get: function () {\n var ms = this._min * Math.pow(this._factor, this._attempts);\n if (this._jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this._jitter * ms);\n ms = (Math.floor(rand * 10) & 1) === 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this._max) | 0;\n }\n },\n _timeoutID: {\n value: null,\n writable: true\n }\n });\n }\n /**\n * Start the backoff operation.\n * @param {function} fn - Function to call\n * @return {void}\n * @api public\n */\n Backoff.prototype.backoff = function (fn) {\n var _this = this;\n var duration = this._duration;\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n this._timeoutID = setTimeout(function () {\n _this._attempts++;\n fn();\n }, duration);\n };\n /**\n * Reset the number of attempts and clear the timer.\n *\n * @return {void}\n * @api public\n */\n Backoff.prototype.reset = function () {\n this._attempts = 0;\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n };\n return Backoff;\n}());\nmodule.exports = Backoff;\n//# sourceMappingURL=backoff.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar average = require('./average');\nvar SenderOrReceiverReport = require('./senderorreceiverreport');\nvar sum = require('./sum');\n/**\n * @interface ReceiverSummary\n * @property {number} bitrate\n * @property {number} fractionLost - 0–1\n * @property {number} [jitter] - s (undefined for video tracks in Chrome)\n */\n/**\n * @extends SenderOrReceiverReport\n * @property {number} deltaPacketsLost\n * @property {number} deltaPacketsReceived\n * @property {number} [fractionLost] - 0–1 (undefined in Firefox)\n * @property {number} [jitter] - s (undefined for video tracks in Chrome)\n * @property {number} phonyPacketsLost - 0–1\n */\nvar ReceiverReport = /** @class */ (function (_super) {\n __extends(ReceiverReport, _super);\n /**\n * @param {StatsId} id\n * @param {TrackId} trackId\n * @param {number} bitrate - bps\n * @param {number} deltaPacketsLost\n * @param {number} deltaPacketsReceived\n * @param {number} [fractionLost] - 0–1 (undefined in Firefox)\n * @param {number} [jitter] - s (undefined for video tracks in Chrome)\n */\n function ReceiverReport(id, trackId, bitrate, deltaPacketsLost, deltaPacketsReceived, fractionLost, jitter) {\n var _this = _super.call(this, id, trackId, bitrate) || this;\n var phonyFractionLost = deltaPacketsReceived > 0\n ? deltaPacketsLost / deltaPacketsReceived\n : 0;\n Object.defineProperties(_this, {\n deltaPacketsLost: {\n enumerable: true,\n value: deltaPacketsLost\n },\n deltaPacketsReceived: {\n enumerable: true,\n value: deltaPacketsReceived\n },\n fractionLost: {\n enumerable: true,\n value: fractionLost\n },\n jitter: {\n enumerable: true,\n value: jitter\n },\n phonyFractionLost: {\n enumerable: true,\n value: phonyFractionLost\n }\n });\n return _this;\n }\n /**\n * Create a {@link ReceiverReport}.\n * @param {string} trackId\n * @param {RTCStats} olderStats\n * @param {RTCStats} newerStats\n * @returns {ReceiverReport}\n */\n ReceiverReport.of = function (trackId, olderStats, newerStats) {\n if (olderStats.id !== newerStats.id) {\n throw new Error('RTCStats IDs must match');\n }\n var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n var deltaBytesReceived = newerStats.bytesReceived - olderStats.bytesReceived;\n var bitrate = secondsElapsed > 0\n ? (deltaBytesReceived / secondsElapsed) * 8\n : 0;\n var deltaPacketsLost = Math.max(newerStats.packetsLost - olderStats.packetsLost, 0);\n var deltaPacketsReceived = newerStats.packetsReceived - olderStats.packetsReceived;\n var fractionLost = newerStats.fractionLost, jitter = newerStats.jitter;\n return new ReceiverReport(olderStats.id, trackId, bitrate, deltaPacketsLost, deltaPacketsReceived, fractionLost, jitter);\n };\n /**\n * Summarize {@link ReceiverReport}s by summing and averaging their values.\n * @param {Array} reports\n * @returns {ReceiverSummary}\n */\n ReceiverReport.summarize = function (reports) {\n var summaries = reports.map(function (report) { return report.summarize(); });\n var bitrate = sum(summaries.map(function (summary) { return summary.bitrate; }));\n var fractionLost = average(summaries.map(function (summary) { return summary.fractionLost; }));\n var jitter = average(summaries.map(function (summary) { return summary.jitter; }));\n return {\n bitrate: bitrate,\n fractionLost: fractionLost,\n jitter: jitter\n };\n };\n /**\n * Summarize the {@link ReceiveReport}.\n * @returns {ReceiverSummary}\n */\n ReceiverReport.prototype.summarize = function () {\n return {\n bitrate: this.bitrate,\n fractionLost: typeof this.fractionLost === 'number' ? this.fractionLost : this.phonyFractionLost,\n jitter: this.jitter\n };\n };\n return ReceiverReport;\n}(SenderOrReceiverReport));\nmodule.exports = ReceiverReport;\n//# sourceMappingURL=receiverreport.js.map","/* eslint no-undefined:0 */\n'use strict';\n/**\n * @param {Array} xs\n * @returns {number|undefined}\n */\nfunction average(xs) {\n xs = xs.filter(function (x) { return typeof x === 'number'; });\n return xs.length < 1 ? undefined : xs.reduce(function (y, x) { return x + y; }) / xs.length;\n}\nmodule.exports = average;\n//# sourceMappingURL=average.js.map","'use strict';\n/**\n * @property {StatsId} id\n * @property {TrackId} trackId\n * @property {number} bitrate - bps\n */\nvar SenderOrReceiverReport = /** @class */ (function () {\n /**\n * Construct a {@link SenderOrReceiverReport}.\n * @param {StatsId} id\n * @param {TrackId} trackId\n * @param {number} bitrate - bps\n */\n function SenderOrReceiverReport(id, trackId, bitrate) {\n Object.defineProperties(this, {\n id: {\n enumerable: true,\n value: id\n },\n trackId: {\n enumerable: true,\n value: trackId\n },\n bitrate: {\n enumerable: true,\n value: bitrate\n }\n });\n }\n return SenderOrReceiverReport;\n}());\nmodule.exports = SenderOrReceiverReport;\n//# sourceMappingURL=senderorreceiverreport.js.map","'use strict';\n/**\n * @param {Array} xs\n * @returns {number}\n */\nfunction sum(xs) {\n return xs.reduce(function (y, x) { return typeof x === 'number' ? x + y : y; }, 0);\n}\nmodule.exports = sum;\n//# sourceMappingURL=sum.js.map","/* eslint no-undefined:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar average = require('./average');\nvar SenderOrReceiverReport = require('./senderorreceiverreport');\nvar sum = require('./sum');\n/**\n * @interface SenderSummary\n * @property {number} bitrate\n * @property {number} [rtt] - s (undefined in Chrome)\n */\n/**\n * @extends SenderOrReceiverReport\n * @property {number} [rtt] - s (undefined in Chrome)\n */\nvar SenderReport = /** @class */ (function (_super) {\n __extends(SenderReport, _super);\n /**\n * Construct a {@link SenderReport}.\n * @param {StatsId} id\n * @param {TrackId} trackId\n * @param {number} bitrate - bps\n * @param {number} [rtt] - s\n */\n function SenderReport(id, trackId, bitrate, rtt) {\n var _this = _super.call(this, id, trackId, bitrate) || this;\n Object.defineProperties(_this, {\n rtt: {\n enumerable: true,\n value: rtt\n }\n });\n return _this;\n }\n /**\n * Create a {@link SenderReport}.\n * @param {string} trackId\n * @param {RTCStats} olderStats\n * @param {RTCStats} newerStats\n * @param {RTCRemoteInboundRtpStreamStats} [newerRemoteStats]\n * @returns {SenderReport}\n */\n SenderReport.of = function (trackId, olderStats, newerStats, newerRemoteStats) {\n if (olderStats.id !== newerStats.id) {\n throw new Error('RTCStats IDs must match');\n }\n var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n var deltaBytesSent = newerStats.bytesSent - olderStats.bytesSent;\n var bitrate = secondsElapsed > 0\n ? (deltaBytesSent / secondsElapsed) * 8\n : 0;\n var rtt = newerRemoteStats && typeof newerRemoteStats.roundTripTime === 'number'\n ? newerRemoteStats.roundTripTime / 1000\n : undefined;\n return new SenderReport(olderStats.id, trackId, bitrate, rtt);\n };\n /**\n * Summarize {@link SenderReport}s by summing and averaging their values.\n * @param {Array} reports\n * @returns {SenderSummary}\n */\n SenderReport.summarize = function (reports) {\n var bitrate = sum(reports.map(function (report) { return report.bitrate; }));\n var rtt = average(reports.map(function (report) { return report.rtt; }));\n return {\n bitrate: bitrate,\n rtt: rtt\n };\n };\n return SenderReport;\n}(SenderOrReceiverReport));\nmodule.exports = SenderReport;\n//# sourceMappingURL=senderreport.js.map","'use strict';\n/**\n * @property {StatsId} id\n * @property {TrackId} trackId\n * @property {RTCStats} lastStats\n */\nvar SenderOrReceiverReportFactory = /** @class */ (function () {\n /**\n * @param {StatsId} id\n * @param {TrackId} trackId\n * @param {RTCStats} initialStats\n */\n function SenderOrReceiverReportFactory(id, trackId, initialStats) {\n Object.defineProperties(this, {\n id: {\n enumerable: true,\n value: id,\n writable: true\n },\n trackId: {\n enumerable: true,\n value: trackId,\n writable: true\n },\n lastStats: {\n enumerable: true,\n value: initialStats,\n writable: true\n }\n });\n }\n return SenderOrReceiverReportFactory;\n}());\nmodule.exports = SenderOrReceiverReportFactory;\n//# sourceMappingURL=senderorreceiverreportfactory.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * Represents recording state\n * @extends EventEmitter\n * @property {?boolean} isEnabled\n */\nvar RecordingSignaling = /** @class */ (function (_super) {\n __extends(RecordingSignaling, _super);\n /**\n * Construct a {@link RecordingSignaling}.\n */\n function RecordingSignaling() {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _isEnabled: {\n value: null,\n writable: true\n },\n isEnabled: {\n enumerable: true,\n get: function () {\n return this._isEnabled;\n }\n }\n });\n return _this;\n }\n /**\n * Disable the {@link RecordingSignaling} if it is not already disabled.\n * @return {this}\n */\n RecordingSignaling.prototype.disable = function () {\n return this.enable(false);\n };\n /**\n * Enable (or disable) the {@link RecordingSignaling} if it is not already enabled\n * (or disabled).\n * @param {boolean} [enabled=true]\n * @return {this}\n */\n RecordingSignaling.prototype.enable = function (enabled) {\n enabled = typeof enabled === 'boolean' ? enabled : true;\n if (this.isEnabled !== enabled) {\n this._isEnabled = enabled;\n this.emit('updated');\n }\n return this;\n };\n return RecordingSignaling;\n}(EventEmitter));\n/**\n * Emitted whenever the {@link RecordingSignaling} is updated\n * @event RecordingSignaling#updated\n */\nmodule.exports = RecordingSignaling;\n//# sourceMappingURL=recording.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar DefaultRecordingSignaling = require('./recording');\nvar StateMachine = require('../statemachine');\nvar DefaultTimeout = require('../util/timeout');\nvar buildLogLevels = require('../util').buildLogLevels;\nvar DEFAULT_LOG_LEVEL = require('../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../util/log');\nvar _a = require('../util/twilio-video-errors'), MediaConnectionError = _a.MediaConnectionError, MediaDTLSTransportFailedError = _a.MediaDTLSTransportFailedError, SignalingConnectionDisconnectedError = _a.SignalingConnectionDisconnectedError;\nvar nInstances = 0;\n/*\nRoomSignaling States\n-----------------------\n\n +-----------+ +--------------+\n | | | |\n | connected |---->| disconnected |\n | | | |\n +-----------+ +--------------+\n | ^ ^\n | | |\n | | +--------------+\n | +---| |\n | | reconnecting |\n +----->| |\n +--------------+\n\n*/\nvar states = {\n connected: [\n 'reconnecting',\n 'disconnected'\n ],\n reconnecting: [\n 'connected',\n 'disconnected'\n ],\n disconnected: []\n};\n/**\n * A {@link Room} implementation\n * @extends StateMachine\n * @property {RTCPeerConnectionState} connectionState\n * @property {?Participant.SID} dominantSpeakerSid\n * @property {ParticipantSignaling} localParticipant\n * @property {RTCIceConnectionState} iceConnectionState\n * @property {string} name\n * @property {Map} participants\n * @property {RecordingSignaling} recording\n * @property {Room.SID} sid\n * @property {string} state - \"connected\", \"reconnecting\", or \"disconnected\"\n * @property {string} signalingConnectionState - \"connected\",\n * \"reconnecting\", or \"disconnected\"\n * @emits RoomSignaling#connectionStateChanged\n * @emits RoomSignaling#dominantSpeakerChanged\n * @emits RoomSignaling#iceConnectionStateChanged\n * @emits RoomSignaling#signalingConnectionStateChanged\n */\nvar RoomSignaling = /** @class */ (function (_super) {\n __extends(RoomSignaling, _super);\n /**\n * Construct a {@link RoomSignaling}.\n * @param {ParticipantSignaling} localParticipant\n * @param {Room.SID} sid\n * @param {string} name\n * @param {object} options\n */\n function RoomSignaling(localParticipant, sid, name, options) {\n var _this = this;\n options = Object.assign({\n logLevel: DEFAULT_LOG_LEVEL,\n RecordingSignaling: DefaultRecordingSignaling,\n Timeout: DefaultTimeout\n }, options);\n var logLevels = buildLogLevels(options.logLevel);\n _this = _super.call(this, 'connected', states) || this;\n var RecordingSignaling = options.RecordingSignaling;\n var sessionTimeout = new options.Timeout(function () {\n _this._disconnect(_this._reconnectingError);\n }, options.sessionTimeout, false);\n Object.defineProperties(_this, {\n _instanceId: {\n value: nInstances++\n },\n _log: {\n value: options.log\n ? options.log.createLog('default', _this)\n : new Log('default', _this, logLevels, options.loggerName)\n },\n _mediaConnectionIsReconnecting: {\n writable: true,\n value: false\n },\n _options: {\n value: options\n },\n _reconnectingError: {\n value: null,\n writable: true\n },\n _sessionTimeout: {\n value: sessionTimeout\n },\n dominantSpeakerSid: {\n enumerable: true,\n value: null,\n writable: true\n },\n localParticipant: {\n enumerable: true,\n value: localParticipant\n },\n name: {\n enumerable: true,\n value: name\n },\n participants: {\n enumerable: true,\n value: new Map()\n },\n recording: {\n enumerable: true,\n value: new RecordingSignaling()\n },\n sid: {\n enumerable: true,\n value: sid\n }\n });\n _this.on('connectionStateChanged', function () {\n if (_this.connectionState === 'failed'\n && !['disconnected', 'failed'].includes(_this.iceConnectionState)) {\n _this._disconnect(new MediaDTLSTransportFailedError());\n }\n });\n _this.on('iceConnectionStateChanged', function () { return maybeUpdateState(_this); });\n _this.on('signalingConnectionStateChanged', function () { return maybeUpdateState(_this); });\n // NOTE(mmalavalli): In case \"iceConnectionState\" is already failed, update\n // the RoomSignaling state. setTimeout() ensures that the state is updated\n // after RoomV2's constructor is fully executed, thereby making \"signalingConnectionState\"\n // available here.\n setTimeout(function () { return maybeUpdateState(_this); });\n return _this;\n }\n /**\n * Disconnect, possibly with an Error.\n * @private\n * @param {Error} [error]\n * @returns {boolean}\n */\n RoomSignaling.prototype._disconnect = function (error) {\n if (this.state !== 'disconnected') {\n this.preempt('disconnected', null, [error]);\n return true;\n }\n return false;\n };\n RoomSignaling.prototype.toString = function () {\n return \"[RoomSignaling #\" + this._instanceId + \": \" + (this.localParticipant ? this.localParticipant.sid : 'null') + \"]\";\n };\n /**\n * Connect {@link RemoteParticipantSignaling} to the {@link RoomSignaling}.\n * @param {RemoteParticipantSignaling} participant\n * @returns {boolean}\n */\n RoomSignaling.prototype.connectParticipant = function (participant) {\n var self = this;\n if (participant.state === 'disconnected') {\n return false;\n }\n if (this.participants.has(participant.sid)) {\n return false;\n }\n this.participants.set(participant.sid, participant);\n participant.on('stateChanged', function stateChanged(state) {\n if (state === 'disconnected') {\n participant.removeListener('stateChanged', stateChanged);\n self.participants.delete(participant.sid);\n self.emit('participantDisconnected', participant);\n }\n });\n this.emit('participantConnected', participant);\n return true;\n };\n /**\n * Disconnect.\n * @returns {boolean}\n */\n RoomSignaling.prototype.disconnect = function () {\n return this._disconnect();\n };\n /**\n * Set (or unset) the Dominant Speaker.\n * @param {?Participant.SID} dominantSpeakerSid\n * @returns {void}\n */\n RoomSignaling.prototype.setDominantSpeaker = function (dominantSpeakerSid) {\n this.dominantSpeakerSid = dominantSpeakerSid;\n this.emit('dominantSpeakerChanged');\n };\n return RoomSignaling;\n}(StateMachine));\n/**\n * @event RoomSignaling#event:connectionStateChanged\n */\n/**\n * @event RoomSignaling#event:dominantSpeakerChanged\n */\n/**\n * {@link RemoteParticipantSignaling} connected to the {@link RoomSignaling}.\n * @event RoomSignaling#event:participantConnected\n * @param {RemoteParticipantSignaling} participantSignaling\n */\n/**\n * {@link RemoteParticipantSignaling} disconnected from the {@link RoomSignaling}.\n * @event RoomSignaling#event:participantDisconnected\n * @param {RemoteParticipantSignaling} participantSignaling\n */\n/**\n * @event RoomSignaling#event:iceConnectionStateChanged\n */\n/**\n * @event RoomSignaling#event:signalingConnectionStateChanged\n */\n/**\n * Maybe update the {@link RoomSignaling} state.\n * @param {RoomSignaling} roomSignaling\n */\nfunction maybeUpdateState(roomSignaling) {\n if (roomSignaling.state === 'disconnected' || roomSignaling.signalingConnectionState === 'disconnected') {\n roomSignaling._sessionTimeout.clear();\n return;\n }\n var newState;\n if (roomSignaling.signalingConnectionState === 'reconnecting') {\n newState = roomSignaling.signalingConnectionState;\n }\n else if (roomSignaling.iceConnectionState === 'failed') {\n roomSignaling._mediaConnectionIsReconnecting = true;\n newState = 'reconnecting';\n }\n else if (roomSignaling.iceConnectionState === 'new' || roomSignaling.iceConnectionState === 'checking') {\n newState = roomSignaling._mediaConnectionIsReconnecting ? 'reconnecting' : 'connected';\n }\n else {\n roomSignaling._mediaConnectionIsReconnecting = false;\n roomSignaling._reconnectingError = null;\n roomSignaling._sessionTimeout.clear();\n newState = 'connected';\n }\n if (newState === roomSignaling.state) {\n return;\n }\n if (newState === 'reconnecting') {\n roomSignaling._reconnectingError = roomSignaling.signalingConnectionState === 'reconnecting'\n ? new SignalingConnectionDisconnectedError()\n : new MediaConnectionError();\n roomSignaling._sessionTimeout.start();\n roomSignaling.preempt(newState, null, [roomSignaling._reconnectingError]);\n }\n else {\n roomSignaling.preempt(newState);\n }\n}\nmodule.exports = RoomSignaling;\n//# sourceMappingURL=room.js.map","'use strict';\nvar NetworkQualitySendStats = require('./networkqualitysendstats');\nvar NetworkQualityRecvStats = require('./networkqualityrecvstats');\n/**\n * Network quality statistics shared between a {@link Participant}'s audio or video.\n * @property {NetworkQualityLevel} send - {@link NetworkQualityLevel} of the\n * {@link Participant}'s published audio or video\n * @property {number} recv - {@link NetworkQualityLevel} of the\n * {@link Participant}'s subscribed audio or video\n * @property {?NetworkQualitySendOrRecvStats} sendStats - {@link NetworkQualitySendOrRecvStats}\n * based on which {@link NetworkQualityMediaStats}#send\n * is calculated\n * @property {?NetworkQualitySendOrRecvStats} recvStats - {@link NetworkQualitySendOrRecvStats}\n * based on which {@link NetworkQualityMediaStats}#recv\n * is calculated\n */\nvar NetworkQualityMediaStats = /** @class */ (function () {\n /**\n * Construct a {@link NetworkQualityMediaStats}.\n * @param {MediaLevels} mediaLevels\n */\n function NetworkQualityMediaStats(_a) {\n var send = _a.send, recv = _a.recv, _b = _a.sendStats, sendStats = _b === void 0 ? null : _b, _c = _a.recvStats, recvStats = _c === void 0 ? null : _c;\n Object.defineProperties(this, {\n send: {\n value: send,\n enumerable: true\n },\n recv: {\n value: recv,\n enumerable: true\n },\n sendStats: {\n value: sendStats ? new NetworkQualitySendStats(sendStats) : null,\n enumerable: true\n },\n recvStats: {\n value: recvStats ? new NetworkQualityRecvStats(recvStats) : null,\n enumerable: true\n }\n });\n }\n return NetworkQualityMediaStats;\n}());\nmodule.exports = NetworkQualityMediaStats;\n//# sourceMappingURL=networkqualitymediastats.js.map","'use strict';\nvar NetworkQualityBandwidthStats = require('./networkqualitybandwidthstats');\nvar NetworkQualityFractionLostStats = require('./networkqualityfractionloststats');\nvar NetworkQualityLatencyStats = require('./networkqualitylatencystats');\n/**\n * Network quality statistics shared between {@link NetworkQualitySendStats} and\n * {@link NetworkQualityRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}#send or\n * {@link NetworkQualityMediaStats}#recv is calculated.\n * @property {?NetworkQualityBandwidthStats} bandwidth - bandwidth statistics\n * @property {?NetworkQualityLatencyStats} latency - latency statistics\n * @property {?NetworkQualityFractionLostStats} fractionLost - fraction lost statistics\n */\nvar NetworkQualitySendOrRecvStats = /** @class */ (function () {\n /**\n * Construct a {@link NetworkQualitySendOrRecvStats}.\n * @param {SendOrRecvStats} sendOrRecvStats\n */\n function NetworkQualitySendOrRecvStats(_a) {\n var _b = _a.bandwidth, bandwidth = _b === void 0 ? null : _b, _c = _a.fractionLost, fractionLost = _c === void 0 ? null : _c, _d = _a.latency, latency = _d === void 0 ? null : _d;\n Object.defineProperties(this, {\n bandwidth: {\n value: bandwidth ? new NetworkQualityBandwidthStats(bandwidth) : null,\n enumerable: true\n },\n fractionLost: {\n value: fractionLost ? new NetworkQualityFractionLostStats(fractionLost) : null,\n enumerable: true\n },\n latency: {\n value: latency ? new NetworkQualityLatencyStats(latency) : null,\n enumerable: true\n }\n });\n }\n return NetworkQualitySendOrRecvStats;\n}());\nmodule.exports = NetworkQualitySendOrRecvStats;\n//# sourceMappingURL=networkqualitysendorrecvstats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * A {@link Track} implementation\n * @extends EventEmitter\n * @property {Track.Kind} kind\n * @property {string} name\n */\nvar TrackSignaling = /** @class */ (function (_super) {\n __extends(TrackSignaling, _super);\n /**\n * Construct a {@link TrackSignaling}.\n * @param {string} name\n * @param {Track.Kind} kind\n * @param {boolean} isEnabled\n * @param {Track.Priority} priority\n */\n function TrackSignaling(name, kind, isEnabled, priority) {\n var _this = _super.call(this) || this;\n var sid = null;\n Object.defineProperties(_this, {\n _error: {\n value: null,\n writable: true\n },\n _isEnabled: {\n value: isEnabled,\n writable: true\n },\n _priority: {\n value: priority,\n writable: true\n },\n _trackTransceiver: {\n value: null,\n writable: true\n },\n _sid: {\n get: function () {\n return sid;\n },\n set: function (_sid) {\n if (sid === null) {\n sid = _sid;\n }\n }\n },\n kind: {\n enumerable: true,\n value: kind\n },\n name: {\n enumerable: true,\n value: name\n }\n });\n return _this;\n }\n Object.defineProperty(TrackSignaling.prototype, \"error\", {\n /**\n * Non-null if publication or subscription failed.\n * @property {?Error} error\n */\n get: function () {\n return this._error;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TrackSignaling.prototype, \"isEnabled\", {\n /**\n * Whether the {@link TrackSignaling} is enabled.\n * @property {boolean}\n */\n get: function () {\n return this._isEnabled;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TrackSignaling.prototype, \"priority\", {\n /**\n * The {@link TrackSignaling}'s priority.\n * @property {Track.Priority}\n */\n get: function () {\n return this._priority;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TrackSignaling.prototype, \"sid\", {\n /**\n * The {@link TrackSignaling}'s {@link Track.SID}.\n * @property {Track.SID}\n */\n get: function () {\n return this._sid;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TrackSignaling.prototype, \"trackTransceiver\", {\n /**\n * The {@link TrackSignaling}'s {@link TrackTransceiver}.\n * @property {TrackTransceiver}\n */\n get: function () {\n return this._trackTransceiver;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Disable the {@link TrackSignaling} if it is not already disabled.\n * @return {this}\n */\n TrackSignaling.prototype.disable = function () {\n return this.enable(false);\n };\n /**\n * Enable (or disable) the {@link TrackSignaling} if it is not already enabled\n * (or disabled).\n * @param {boolean} [enabled=true]\n * @return {this}\n */\n TrackSignaling.prototype.enable = function (enabled) {\n enabled = typeof enabled === 'boolean' ? enabled : true;\n if (this.isEnabled !== enabled) {\n this._isEnabled = enabled;\n this.emit('updated');\n }\n return this;\n };\n /**\n * Set the {@link TrackTransceiver} on the {@link TrackSignaling}.\n * @param {TrackTransceiver} trackTransceiver\n * @returns {this}\n */\n TrackSignaling.prototype.setTrackTransceiver = function (trackTransceiver) {\n trackTransceiver = trackTransceiver || null;\n if (this.trackTransceiver !== trackTransceiver) {\n this._trackTransceiver = trackTransceiver;\n this.emit('updated');\n }\n return this;\n };\n /**\n * Set the SID on the {@link TrackSignaling} once.\n * @param {string} sid\n * @returns {this}\n */\n TrackSignaling.prototype.setSid = function (sid) {\n if (this.sid === null) {\n this._sid = sid;\n this.emit('updated');\n }\n return this;\n };\n return TrackSignaling;\n}(EventEmitter));\n/**\n * Emitted whenever the {@link TrackSignaling} is updated\n * @event TrackSignaling#updated\n */\nmodule.exports = TrackSignaling;\n//# sourceMappingURL=track.js.map","'use strict';\nvar _a = require('./util/constants'), DEFAULT_LOG_LEVEL = _a.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _a.DEFAULT_LOGGER_NAME;\n/**\n * Request a {@link LocalAudioTrack} or {@link LocalVideoTrack}.\n * @param {Track.Kind} kind - \"audio\" or \"video\"\n * @param {CreateLocalTrackOptions} [options]\n * @returns {Promise}\n * @private\n */\nfunction createLocalTrack(kind, options) {\n options = Object.assign({\n loggerName: DEFAULT_LOGGER_NAME,\n logLevel: DEFAULT_LOG_LEVEL,\n }, options);\n var createOptions = {};\n createOptions.loggerName = options.loggerName;\n createOptions.logLevel = options.logLevel;\n delete options.loggerName;\n delete options.logLevel;\n var createLocalTracks = options.createLocalTracks;\n delete options.createLocalTracks;\n createOptions[kind] = Object.keys(options).length > 0 ? options : true;\n return createLocalTracks(createOptions).then(function (localTracks) { return localTracks[0]; });\n}\n/**\n * Request a {@link LocalAudioTrack}.\n * @alias module:twilio-video.createLocalAudioTrack\n * @param {CreateLocalTracksOptions|CreateLocalAudioTrackOptions} [options] - Options for requesting a {@link LocalAudioTrack}\n * @returns {Promise}\n * @example\n * var Video = require('twilio-video');\n *\n * // Connect to the Room with just video\n * Video.connect('my-token', {\n * name: 'my-cool-room',\n * video: true\n * }).then(function(room) {\n * // Add audio after connecting to the Room\n * Video.createLocalAudioTrack().then(function(localTrack) {\n * room.localParticipant.publishTrack(localTrack);\n * });\n * });\n * @example\n * var Video = require('twilio-video');\n *\n * // Request the LocalAudioTrack with a custom name\n * // and krisp noise cancellation\n * Video.createLocalAudioTrack({\n * name: 'microphone',\n * noiseCancellationOptions: {\n * vendor: 'krisp',\n * sdkAssetsPath: '/twilio-krisp-audio-plugin/1.0.0/dist'\n * }\n * });\n */\nfunction createLocalAudioTrack(options) {\n return createLocalTrack('audio', options);\n}\n/**\n * Request a {@link LocalVideoTrack}. Note that on mobile browsers,\n * the camera can be reserved by only one {@link LocalVideoTrack} at any given\n * time. If you attempt to create a second {@link LocalVideoTrack}, video frames\n * will no longer be supplied to the first {@link LocalVideoTrack}.\n * @alias module:twilio-video.createLocalVideoTrack\n * @param {CreateLocalTrackOptions} [options] - Options for requesting a {@link LocalVideoTrack}\n * @returns {Promise}\n * @example\n * var Video = require('twilio-video');\n *\n * // Connect to the Room with just audio\n * Video.connect('my-token', {\n * name: 'my-cool-room',\n * audio: true\n * }).then(function(room) {\n * // Add video after connecting to the Room\n * Video.createLocalVideoTrack().then(function(localTrack) {\n * room.localParticipant.publishTrack(localTrack);\n * });\n * });\n * @example\n * var Video = require('twilio-video');\n *\n * // Request the default LocalVideoTrack with a custom name\n * Video.createLocalVideoTrack({ name: 'camera' }).then(function(localTrack) {\n * console.log(localTrack.name); // 'camera'\n * });\n */\nfunction createLocalVideoTrack(options) {\n return createLocalTrack('video', options);\n}\n/**\n * {@link NoiseCancellationVendor} specifies the 3rd party plugin to use for noise cancellation.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar NoiseCancellationVendor = {\n /**\n * This plugin can be found by requesting access with this form {@link https://forms.gle/eeFyoGJj1mgMrxN88}\n */\n krisp: 'krisp',\n};\n/**\n * You can use 3rd party noise cancellation plugin when creating {@link LocalAudioTrack}\n * By specifying these options. This is a beta feature.\n * @typedef {object} NoiseCancellationOptions\n * @property {NoiseCancellationVendor} vendor - Specifies the vendor library to use\n * You need to obtain and host the library files on your web server.\n * @property {string} sdkAssetsPath - Specifies path where vendor library files are\n * hosted on your web server.\n */\n/**\n * Create {@link LocalAudioTrack} options.\n * @typedef {CreateLocalTrackOptions} CreateLocalAudioTrackOptions\n * @property {boolean} [workaroundWebKitBug180748=false] - setting this\n * attempts to workaround WebKit Bug 180748, where, in Safari, getUserMedia may return a silent audio\n * MediaStreamTrack.\n * @property {DefaultDeviceCaptureMode} [defaultDeviceCaptureMode=\"auto\"] - This optional property only applies if the\n * {@link LocalAudioTrack} is capturing from the default audio input device connected to a desktop or laptop. When the\n * property is set to \"auto\", the LocalAudioTrack restarts whenever the default audio input device changes, in order to\n * capture audio from the new default audio input device. For example, when a bluetooth audio headset is connected to a\n * Macbook, the LocalAudioTrack will start capturing audio from the headset microphone. When the headset is disconnected,\n * the LocalAudioTrack will start capturing audio from the Macbook microphone. When the property is set to \"manual\", the\n * LocalAudioTrack continues to capture from the same audio input device even after the default audio input device changes.\n * When the property is not specified, it defaults to \"auto\".\n * @property {NoiseCancellationOptions} [noiseCancellationOptions] - This optional property enables using 3rd party plugins\n * for noise cancellation.\n */\n/**\n * Create {@link LocalTrack} options. Apart from the properties listed here, you can\n * also specify any of the MediaTrackConstraints\n * properties.\n * @typedef {MediaTrackConstraints} CreateLocalTrackOptions\n * @property {LogLevel|LogLevels} [logLevel='warn'] - (deprecated: use [Video.Logger](module-twilio-video.html) instead.\n * See [examples](module-twilio-video.html#.connect) for details)\n * Set the default log verbosity\n * of logging. Passing a {@link LogLevel} string will use the same\n * level for all components. Pass a {@link LogLevels} to set specific log\n * levels.\n * @property {string} [loggerName='twilio-video'] - The name of the logger. Use this name when accessing the logger used by the SDK.\n * See [examples](module-twilio-video.html#.connect) for details.\n * @property {string} [name] - The {@link LocalTrack}'s name; by default,\n * it is set to the {@link LocalTrack}'s ID.\n */\nmodule.exports = {\n audio: createLocalAudioTrack,\n video: createLocalVideoTrack\n};\n//# sourceMappingURL=createlocaltrack.js.map","/**\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\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import { Children, ReactNodeArray, PureComponent, Fragment, createElement } from 'react';\nimport {\n Unsubscribe,\n AbilityTuple,\n SubjectType,\n AnyAbility,\n Generics,\n Abilities,\n IfString,\n} from '@casl/ability';\n\nconst noop = () => {};\nconst renderChildren = Fragment\n ? (children?: ReactNodeArray) => {\n if (!children) {\n return null;\n }\n\n return children.length > 1\n ? createElement(Fragment, null, ...children)\n : Children.only(children);\n }\n : Children.only;\n\ntype AbilityCanProps<\n T extends Abilities,\n Else = IfString\n> = T extends AbilityTuple\n ? { do: T[0], on: T[1], field?: string } |\n { I: T[0], a: Extract, field?: string } |\n { I: T[0], an: Extract, field?: string } |\n { I: T[0], this: Exclude, field?: string }\n : Else;\n\ninterface ExtraProps {\n not?: boolean\n passThrough?: boolean\n}\n\ninterface CanExtraProps extends ExtraProps {\n ability: T\n}\n\ninterface BoundCanExtraProps extends ExtraProps {\n ability?: T\n}\n\nexport type CanProps =\n AbilityCanProps['abilities']> & CanExtraProps;\nexport type BoundCanProps =\n AbilityCanProps['abilities']> & BoundCanExtraProps;\n\nexport class Can<\n T extends AnyAbility,\n IsBound extends boolean = false\n> extends PureComponent : CanProps> {\n private _isAllowed: boolean = false;\n private _ability: T | null = null;\n private _unsubscribeFromAbility: Unsubscribe = noop;\n\n componentWillUnmount() {\n this._unsubscribeFromAbility();\n }\n\n private _connectToAbility(ability?: T) {\n if (ability === this._ability) {\n return;\n }\n\n this._unsubscribeFromAbility();\n this._ability = null;\n\n if (ability) {\n this._ability = ability;\n this._unsubscribeFromAbility = ability.on('updated', () => this.forceUpdate());\n }\n }\n\n get allowed() {\n return this._isAllowed;\n }\n\n private _canRender(): boolean {\n const props: any = this.props;\n const subject = props.of || props.a || props.an || props.this || props.on;\n const can = props.not ? 'cannot' : 'can';\n\n return props.ability[can](props.I || props.do, subject, props.field);\n }\n\n render() {\n this._connectToAbility(this.props.ability);\n this._isAllowed = this._canRender();\n return this.props.passThrough || this._isAllowed ? this._renderChildren() : null;\n }\n\n private _renderChildren() {\n const { children, ability } = this.props;\n const elements = typeof children === 'function'\n ? children(this._isAllowed, ability)\n : children;\n\n return renderChildren(elements);\n }\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var baseAssignValue = require('./_baseAssignValue'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee');\n\n/**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\nfunction mapKeys(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n}\n\nmodule.exports = mapKeys;\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","import React, { useState, useRef, useEffect, createContext, useMemo, useContext, useCallback } from 'react';\n\nfunction useLoadGsiScript(options = {}) {\r\n const { onScriptLoadSuccess, onScriptLoadError } = options;\r\n const [scriptLoadedSuccessfully, setScriptLoadedSuccessfully] = useState(false);\r\n const onScriptLoadSuccessRef = useRef(onScriptLoadSuccess);\r\n onScriptLoadSuccessRef.current = onScriptLoadSuccess;\r\n const onScriptLoadErrorRef = useRef(onScriptLoadError);\r\n onScriptLoadErrorRef.current = onScriptLoadError;\r\n useEffect(() => {\r\n const scriptTag = document.createElement('script');\r\n scriptTag.src = 'https://accounts.google.com/gsi/client';\r\n scriptTag.async = true;\r\n scriptTag.defer = true;\r\n scriptTag.onload = () => {\r\n var _a;\r\n setScriptLoadedSuccessfully(true);\r\n (_a = onScriptLoadSuccessRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadSuccessRef);\r\n };\r\n scriptTag.onerror = () => {\r\n var _a;\r\n setScriptLoadedSuccessfully(false);\r\n (_a = onScriptLoadErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onScriptLoadErrorRef);\r\n };\r\n document.body.appendChild(scriptTag);\r\n return () => {\r\n document.body.removeChild(scriptTag);\r\n };\r\n }, []);\r\n return scriptLoadedSuccessfully;\r\n}\n\nconst GoogleOAuthContext = createContext(null);\r\nfunction GoogleOAuthProvider({ clientId, onScriptLoadSuccess, onScriptLoadError, children, }) {\r\n const scriptLoadedSuccessfully = useLoadGsiScript({\r\n onScriptLoadSuccess,\r\n onScriptLoadError,\r\n });\r\n const contextValue = useMemo(() => ({\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n }), [clientId, scriptLoadedSuccessfully]);\r\n return (React.createElement(GoogleOAuthContext.Provider, { value: contextValue }, children));\r\n}\r\nfunction useGoogleOAuth() {\r\n const context = useContext(GoogleOAuthContext);\r\n if (!context) {\r\n throw new Error('Google OAuth components must be used within GoogleOAuthProvider');\r\n }\r\n return context;\r\n}\n\nconst containerHeightMap = { large: 40, medium: 32, small: 20 };\r\nfunction GoogleLogin({ onSuccess, onError, useOneTap, promptMomentNotification, type = 'standard', theme = 'outline', size = 'large', text, shape, logo_alignment, width, locale, ...props }) {\r\n const btnContainerRef = useRef(null);\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n promptMomentNotificationRef.current = promptMomentNotification;\r\n useEffect(() => {\r\n var _a, _b, _c;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n (_a = window.google) === null || _a === void 0 ? void 0 : _a.accounts.id.initialize({\r\n client_id: clientId,\r\n callback: (credentialResponse) => {\r\n var _a;\r\n if (!credentialResponse.clientId || !credentialResponse.credential) {\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n }\r\n onSuccessRef.current(credentialResponse);\r\n },\r\n ...props,\r\n });\r\n (_b = window.google) === null || _b === void 0 ? void 0 : _b.accounts.id.renderButton(btnContainerRef.current, {\r\n type,\r\n theme,\r\n size,\r\n text,\r\n shape,\r\n logo_alignment,\r\n width,\r\n locale,\r\n });\r\n if (useOneTap)\r\n (_c = window.google) === null || _c === void 0 ? void 0 : _c.accounts.id.prompt(promptMomentNotificationRef.current);\r\n return () => {\r\n var _a;\r\n if (useOneTap)\r\n (_a = window.google) === null || _a === void 0 ? void 0 : _a.accounts.id.cancel();\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n useOneTap,\r\n type,\r\n theme,\r\n size,\r\n text,\r\n shape,\r\n logo_alignment,\r\n width,\r\n locale,\r\n ]);\r\n return (React.createElement(\"div\", { ref: btnContainerRef, style: { height: containerHeightMap[size] } }));\r\n}\n\nfunction googleLogout() {\r\n var _a;\r\n (_a = window.google) === null || _a === void 0 ? void 0 : _a.accounts.id.disableAutoSelect();\r\n}\n\n/* eslint-disable import/export */\r\nfunction useGoogleLogin({ flow = 'implicit', scope = '', onSuccess, onError, ...props }) {\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const clientRef = useRef();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n useEffect(() => {\r\n var _a;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n const clientMethod = flow === 'implicit' ? 'initTokenClient' : 'initCodeClient';\r\n const client = (_a = window.google) === null || _a === void 0 ? void 0 : _a.accounts.oauth2[clientMethod]({\r\n client_id: clientId,\r\n scope: `openid profile email ${scope}`,\r\n callback: (response) => {\r\n var _a, _b;\r\n if (response.error)\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef, response);\r\n (_b = onSuccessRef.current) === null || _b === void 0 ? void 0 : _b.call(onSuccessRef, response);\r\n },\r\n ...props,\r\n });\r\n clientRef.current = client;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [clientId, scriptLoadedSuccessfully, flow, scope]);\r\n const loginImplicitFlow = useCallback((overrideConfig) => clientRef.current.requestAccessToken(overrideConfig), []);\r\n const loginAuthCodeFlow = useCallback(() => clientRef.current.requestCode(), []);\r\n return flow === 'implicit' ? loginImplicitFlow : loginAuthCodeFlow;\r\n}\n\nfunction useGoogleOneTapLogin({ onSuccess, onError, promptMomentNotification, cancel_on_tap_outside, hosted_domain, }) {\r\n const { clientId, scriptLoadedSuccessfully } = useGoogleOAuth();\r\n const onSuccessRef = useRef(onSuccess);\r\n onSuccessRef.current = onSuccess;\r\n const onErrorRef = useRef(onError);\r\n onErrorRef.current = onError;\r\n const promptMomentNotificationRef = useRef(promptMomentNotification);\r\n promptMomentNotificationRef.current = promptMomentNotification;\r\n useEffect(() => {\r\n var _a, _b;\r\n if (!scriptLoadedSuccessfully)\r\n return;\r\n (_a = window.google) === null || _a === void 0 ? void 0 : _a.accounts.id.initialize({\r\n client_id: clientId,\r\n callback: (credentialResponse) => {\r\n var _a;\r\n if (!credentialResponse.clientId || !credentialResponse.credential) {\r\n return (_a = onErrorRef.current) === null || _a === void 0 ? void 0 : _a.call(onErrorRef);\r\n }\r\n onSuccessRef.current(credentialResponse);\r\n },\r\n hosted_domain,\r\n cancel_on_tap_outside,\r\n });\r\n (_b = window.google) === null || _b === void 0 ? void 0 : _b.accounts.id.prompt(promptMomentNotificationRef.current);\r\n return () => {\r\n var _a;\r\n (_a = window.google) === null || _a === void 0 ? void 0 : _a.accounts.id.cancel();\r\n };\r\n }, [\r\n clientId,\r\n scriptLoadedSuccessfully,\r\n cancel_on_tap_outside,\r\n hosted_domain,\r\n ]);\r\n}\n\n/**\r\n * Checks if the user granted all the specified scope or scopes\r\n * @returns True if all the scopes are granted\r\n */\r\nfunction hasGrantedAllScopesGoogle(tokenResponse, firstScope, ...restScopes) {\r\n if (!window.google)\r\n return false;\r\n return window.google.accounts.oauth2.hasGrantedAllScopes(tokenResponse, firstScope, ...restScopes);\r\n}\n\n/**\r\n * Checks if the user granted any of the specified scope or scopes.\r\n * @returns True if any of the scopes are granted\r\n */\r\nfunction hasGrantedAnyScopeGoogle(tokenResponse, firstScope, ...restScopes) {\r\n if (!window.google)\r\n return false;\r\n return window.google.accounts.oauth2.hasGrantedAnyScope(tokenResponse, firstScope, ...restScopes);\r\n}\n\nexport { GoogleLogin, GoogleOAuthProvider, googleLogout, hasGrantedAllScopesGoogle, hasGrantedAnyScopeGoogle, useGoogleLogin, useGoogleOneTapLogin };\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n'use strict';\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createLocalTracks = void 0;\nvar noisecancellationimpl_1 = require(\"./media/track/noisecancellationimpl\");\nvar buildLogLevels = require('./util').buildLogLevels;\nvar _a = require('./webrtc'), getUserMedia = _a.getUserMedia, MediaStreamTrack = _a.MediaStreamTrack;\nvar _b = require('./media/track/es5'), LocalAudioTrack = _b.LocalAudioTrack, LocalDataTrack = _b.LocalDataTrack, LocalVideoTrack = _b.LocalVideoTrack;\nvar Log = require('./util/log');\nvar _c = require('./util/constants'), DEFAULT_LOG_LEVEL = _c.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _c.DEFAULT_LOGGER_NAME, INVALID_VALUE = _c.typeErrors.INVALID_VALUE;\nvar workaround180748 = require('./webaudio/workaround180748');\n// This is used to make out which createLocalTracks() call a particular Log\n// statement belongs to. Each call to createLocalTracks() increments this\n// counter.\nvar createLocalTrackCalls = 0;\n/**\n * Request {@link LocalTrack}s. By default, it requests a\n * {@link LocalAudioTrack} and a {@link LocalVideoTrack}.\n * Note that on mobile browsers, the camera can be reserved by only one {@link LocalVideoTrack}\n * at any given time. If you attempt to create a second {@link LocalVideoTrack}, video frames\n * will no longer be supplied to the first {@link LocalVideoTrack}.\n * @alias module:twilio-video.createLocalTracks\n * @param {CreateLocalTracksOptions} [options]\n * @returns {Promise>}\n * @example\n * var Video = require('twilio-video');\n * // Request audio and video tracks\n * Video.createLocalTracks().then(function(localTracks) {\n * var localMediaContainer = document.getElementById('local-media-container-id');\n * localTracks.forEach(function(track) {\n * localMediaContainer.appendChild(track.attach());\n * });\n * });\n * @example\n * var Video = require('twilio-video');\n * // Request just the default audio track\n * Video.createLocalTracks({ audio: true }).then(function(localTracks) {\n * return Video.connect('my-token', {\n * name: 'my-cool-room',\n * tracks: localTracks\n * });\n * });\n * @example\n * var Video = require('twilio-video');\n * // Request the audio and video tracks with custom names\n * Video.createLocalTracks({\n * audio: { name: 'microphone' },\n * video: { name: 'camera' }\n * }).then(function(localTracks) {\n * localTracks.forEach(function(localTrack) {\n * console.log(localTrack.name);\n * });\n * });\n *\n * @example\n * var Video = require('twilio-video');\n * var localTracks;\n *\n * // Pre-acquire tracks to display camera preview.\n * Video.createLocalTracks().then(function(tracks) {\n * localTracks = tracks;\n * var localVideoTrack = localTracks.find(track => track.kind === 'video');\n * divContainer.appendChild(localVideoTrack.attach());\n * })\n *\n * // Later, join the Room with the pre-acquired LocalTracks.\n * Video.connect('token', {\n * name: 'my-cool-room',\n * tracks: localTracks\n * });\n *\n */\nfunction createLocalTracks(options) {\n return __awaiter(this, void 0, void 0, function () {\n var isAudioVideoAbsent, fullOptions, logComponentName, logLevels, log, localTrackOptions, extraLocalTrackOptions, noiseCancellationOptions, mediaStreamConstraints, workaroundWebKitBug180748, mediaStream, mediaStreamTracks, error_1;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isAudioVideoAbsent = !(options && ('audio' in options || 'video' in options));\n fullOptions = __assign({ audio: isAudioVideoAbsent, getUserMedia: getUserMedia, loggerName: DEFAULT_LOGGER_NAME, logLevel: DEFAULT_LOG_LEVEL, LocalAudioTrack: LocalAudioTrack,\n LocalDataTrack: LocalDataTrack,\n LocalVideoTrack: LocalVideoTrack,\n MediaStreamTrack: MediaStreamTrack,\n Log: Log, video: isAudioVideoAbsent }, options);\n logComponentName = \"[createLocalTracks #\" + ++createLocalTrackCalls + \"]\";\n logLevels = buildLogLevels(fullOptions.logLevel);\n log = new fullOptions.Log('default', logComponentName, logLevels, fullOptions.loggerName);\n localTrackOptions = Object.assign({ log: log }, fullOptions);\n // NOTE(mmalavalli): The Room \"name\" in \"options\" was being used\n // as the LocalTrack name in asLocalTrack(). So we pass a copy of\n // \"options\" without the \"name\".\n // NOTE(joma): CreateLocalTracksOptions type does not really have a \"name\" property when used publicly by customers.\n // But we are passing this property when used internally by other JS files.\n // We can update this \"any\" type once those JS files are converted to TS.\n delete localTrackOptions.name;\n if (fullOptions.audio === false && fullOptions.video === false) {\n log.info('Neither audio nor video requested, so returning empty LocalTracks');\n return [2 /*return*/, []];\n }\n if (fullOptions.tracks) {\n log.info('Adding user-provided LocalTracks');\n log.debug('LocalTracks:', fullOptions.tracks);\n return [2 /*return*/, fullOptions.tracks];\n }\n extraLocalTrackOptions = {\n audio: typeof fullOptions.audio === 'object' && fullOptions.audio.name\n ? { name: fullOptions.audio.name }\n : { defaultDeviceCaptureMode: 'auto' },\n video: typeof fullOptions.video === 'object' && fullOptions.video.name\n ? { name: fullOptions.video.name }\n : {}\n };\n extraLocalTrackOptions.audio.isCreatedByCreateLocalTracks = true;\n extraLocalTrackOptions.video.isCreatedByCreateLocalTracks = true;\n if (typeof fullOptions.audio === 'object') {\n if (typeof fullOptions.audio.workaroundWebKitBug1208516 === 'boolean') {\n extraLocalTrackOptions.audio.workaroundWebKitBug1208516 = fullOptions.audio.workaroundWebKitBug1208516;\n }\n if ('noiseCancellationOptions' in fullOptions.audio) {\n noiseCancellationOptions = fullOptions.audio.noiseCancellationOptions;\n delete fullOptions.audio.noiseCancellationOptions;\n }\n if (!('defaultDeviceCaptureMode' in fullOptions.audio)) {\n extraLocalTrackOptions.audio.defaultDeviceCaptureMode = 'auto';\n }\n else if (['auto', 'manual'].every(function (mode) { return mode !== fullOptions.audio.defaultDeviceCaptureMode; })) {\n // eslint-disable-next-line new-cap\n throw INVALID_VALUE('CreateLocalAudioTrackOptions.defaultDeviceCaptureMode', ['auto', 'manual']);\n }\n else {\n extraLocalTrackOptions.audio.defaultDeviceCaptureMode = fullOptions.audio.defaultDeviceCaptureMode;\n }\n }\n if (typeof fullOptions.video === 'object' && typeof fullOptions.video.workaroundWebKitBug1208516 === 'boolean') {\n extraLocalTrackOptions.video.workaroundWebKitBug1208516 = fullOptions.video.workaroundWebKitBug1208516;\n }\n if (typeof fullOptions.audio === 'object') {\n delete fullOptions.audio.name;\n }\n if (typeof fullOptions.video === 'object') {\n delete fullOptions.video.name;\n }\n mediaStreamConstraints = {\n audio: fullOptions.audio,\n video: fullOptions.video\n };\n workaroundWebKitBug180748 = typeof fullOptions.audio === 'object' && fullOptions.audio.workaroundWebKitBug180748;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, , 5]);\n return [4 /*yield*/, (workaroundWebKitBug180748\n ? workaround180748(log, fullOptions.getUserMedia, mediaStreamConstraints)\n : fullOptions.getUserMedia(mediaStreamConstraints))];\n case 2:\n mediaStream = _a.sent();\n mediaStreamTracks = __spreadArray(__spreadArray([], __read(mediaStream.getAudioTracks())), __read(mediaStream.getVideoTracks()));\n log.info('Call to getUserMedia successful; got tracks:', mediaStreamTracks);\n return [4 /*yield*/, Promise.all(mediaStreamTracks.map(function (mediaStreamTrack) { return __awaiter(_this, void 0, void 0, function () {\n var _a, cleanTrack, noiseCancellation;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(mediaStreamTrack.kind === 'audio' && noiseCancellationOptions)) return [3 /*break*/, 2];\n return [4 /*yield*/, noisecancellationimpl_1.applyNoiseCancellation(mediaStreamTrack, noiseCancellationOptions, log)];\n case 1:\n _a = _b.sent(), cleanTrack = _a.cleanTrack, noiseCancellation = _a.noiseCancellation;\n return [2 /*return*/, new localTrackOptions.LocalAudioTrack(cleanTrack, __assign(__assign(__assign({}, extraLocalTrackOptions.audio), localTrackOptions), { noiseCancellation: noiseCancellation }))];\n case 2:\n if (mediaStreamTrack.kind === 'audio') {\n return [2 /*return*/, new localTrackOptions.LocalAudioTrack(mediaStreamTrack, __assign(__assign({}, extraLocalTrackOptions.audio), localTrackOptions))];\n }\n _b.label = 3;\n case 3: return [2 /*return*/, new localTrackOptions.LocalVideoTrack(mediaStreamTrack, __assign(__assign({}, extraLocalTrackOptions.video), localTrackOptions))];\n }\n });\n }); }))];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n error_1 = _a.sent();\n log.warn('Call to getUserMedia failed:', error_1);\n throw error_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n}\nexports.createLocalTracks = createLocalTracks;\n//# sourceMappingURL=createlocaltracks.js.map","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyNoiseCancellation = exports.NoiseCancellationImpl = void 0;\nvar noisecancellationadapter_1 = require(\"../../noisecancellationadapter\");\nvar Log = require('../../util/log');\n/**\n * {@link NoiseCancellation} interface provides methods to control noise cancellation at runtime. This interface is exposed\n * on {@link LocalAudioTrack} property `noiseCancellation`. It is available only when {@link NoiseCancellationOptions} are\n * specified when creating a {@link LocalAudioTrack}, and the plugin is successfully loaded.\n * @alias NoiseCancellation\n * @interface\n *\n * @example\n * const { connect, createLocalAudioTrack } = require('twilio-video');\n *\n * // Create a LocalAudioTrack with Krisp noise cancellation enabled.\n * const localAudioTrack = await createLocalAudioTrack({\n * noiseCancellationOptions: {\n * sdkAssetsPath: 'path/to/hosted/twilio/krisp/audio/plugin/1.0.0/dist',\n * vendor: 'krisp'\n * }\n * });\n *\n * if (!localAudioTrack.noiseCancellation) {\n * // If the Krisp audio plugin fails to load, then a warning message will be logged\n * // in the browser console, and the \"noiseCancellation\" property will be set to null.\n * // You can still use the LocalAudioTrack to join a Room. However, it will use the\n * // browser's noise suppression instead of the Krisp noise cancellation. Make sure\n * // the \"sdkAssetsPath\" provided in \"noiseCancellationOptions\" points to the correct\n * // hosted path of the plugin assets.\n * } else {\n * // Join a Room with the LocalAudioTrack.\n * const room = await connect('token', {\n * name: 'my-cool-room',\n * tracks: [localAudioTrack]\n * });\n *\n * if (!localAudioTrack.noiseCancellation.isEnabled) {\n * // Krisp noise cancellation is permanently disabled in Peer-to-Peer and Go Rooms.\n * }\n * }\n *\n * //\n * // Enable/disable noise cancellation.\n * // @param {boolean} enable - whether noise cancellation should be enabled\n * //\n * function setNoiseCancellation(enable) {\n * const { noiseCancellation } = localAudioTrack;\n * if (noiseCancellation) {\n * if (enable) {\n * // If enabled, then the LocalAudioTrack will use the Krisp noise\n * // cancellation instead of the browser's noise suppression.\n * noiseCancellation.enable();\n * } else {\n * // If disabled, then the LocalAudioTrack will use the browser's\n * // noise suppression instead of the Krisp noise cancellation.\n * noiseCancellation.disable();\n * }\n * }\n * }\n */\nvar NoiseCancellationImpl = /** @class */ (function () {\n function NoiseCancellationImpl(processor, originalTrack) {\n this._processor = processor;\n this._sourceTrack = originalTrack;\n this._disabledPermanent = false;\n }\n Object.defineProperty(NoiseCancellationImpl.prototype, \"vendor\", {\n /**\n * Name of the noise cancellation vendor.\n * @type {NoiseCancellationVendor}\n */\n get: function () {\n return this._processor.vendor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NoiseCancellationImpl.prototype, \"sourceTrack\", {\n /**\n * The underlying MediaStreamTrack of the {@link LocalAudioTrack}.\n * @type {MediaStreamTrack}\n */\n get: function () {\n return this._sourceTrack;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NoiseCancellationImpl.prototype, \"isEnabled\", {\n /**\n * Whether noise cancellation is enabled.\n * @type {boolean}\n */\n get: function () {\n return this._processor.isEnabled();\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Enable noise cancellation.\n * @returns {Promise} Promise that resolves when the operation is complete\n * @throws {Error} Throws an error if noise cancellation is disabled permanently\n * for the {@link LocalAudioTrack}\n */\n NoiseCancellationImpl.prototype.enable = function () {\n if (this._disabledPermanent) {\n throw new Error(this.vendor + \" noise cancellation is disabled permanently for this track\");\n }\n this._processor.enable();\n return Promise.resolve();\n };\n /**\n * Disable noise cancellation.\n * @returns {Promise} Promise that resolves when the operation is complete\n */\n NoiseCancellationImpl.prototype.disable = function () {\n this._processor.disable();\n return Promise.resolve();\n };\n /**\n * @private\n */\n NoiseCancellationImpl.prototype.reacquireTrack = function (reacquire) {\n return __awaiter(this, void 0, void 0, function () {\n var processorWasEnabled, track, processedTrack;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n processorWasEnabled = this._processor.isEnabled();\n this._processor.disconnect();\n return [4 /*yield*/, reacquire()];\n case 1:\n track = _a.sent();\n this._sourceTrack = track;\n return [4 /*yield*/, this._processor.connect(track)];\n case 2:\n processedTrack = _a.sent();\n if (processorWasEnabled) {\n this._processor.enable();\n }\n else {\n this._processor.disable();\n }\n return [2 /*return*/, processedTrack];\n }\n });\n });\n };\n /**\n * @private\n */\n NoiseCancellationImpl.prototype.disablePermanently = function () {\n this._disabledPermanent = true;\n return this.disable();\n };\n /**\n * @private\n */\n NoiseCancellationImpl.prototype.stop = function () {\n this._processor.disconnect();\n this._sourceTrack.stop();\n };\n return NoiseCancellationImpl;\n}());\nexports.NoiseCancellationImpl = NoiseCancellationImpl;\nfunction applyNoiseCancellation(mediaStreamTrack, noiseCancellationOptions, log) {\n return __awaiter(this, void 0, void 0, function () {\n var processor, cleanTrack, noiseCancellation, ex_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, noisecancellationadapter_1.createNoiseCancellationAudioProcessor(noiseCancellationOptions, log)];\n case 1:\n processor = _a.sent();\n cleanTrack = processor.connect(mediaStreamTrack);\n noiseCancellation = new NoiseCancellationImpl(processor, mediaStreamTrack);\n return [2 /*return*/, { cleanTrack: cleanTrack, noiseCancellation: noiseCancellation }];\n case 2:\n ex_1 = _a.sent();\n // in case of failures to load noise cancellation library just return original media stream.\n log.warn(\"Failed to create noise cancellation. Returning normal audio track: \" + ex_1);\n return [2 /*return*/, { cleanTrack: mediaStreamTrack }];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nexports.applyNoiseCancellation = applyNoiseCancellation;\n//# sourceMappingURL=noisecancellationimpl.js.map","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createNoiseCancellationAudioProcessor = void 0;\nvar dynamicImport = require('./util/dynamicimport');\nvar Log = require('./util/log');\nvar PLUGIN_CONFIG = {\n krisp: {\n supportedVersion: '1.0.0',\n pluginFile: 'krispsdk.mjs'\n },\n rnnoise: {\n supportedVersion: '0.6.0',\n pluginFile: 'rnnoise_sdk.mjs'\n }\n};\nvar ensureVersionSupported = function (_a) {\n var supportedVersion = _a.supportedVersion, plugin = _a.plugin, log = _a.log;\n if (!plugin.getVersion || !plugin.isSupported) {\n throw new Error('Plugin does not export getVersion/isSupported api. Are you using old version of the plugin ?');\n }\n var pluginVersion = plugin.getVersion();\n log.debug(\"Plugin Version = \" + pluginVersion);\n var supportedVersions = supportedVersion.split('.').map(function (version) { return Number(version); });\n var pluginVersions = pluginVersion.split('.').map(function (version) { return Number(version); });\n if (supportedVersions.length !== 3 || pluginVersions.length !== 3) {\n throw new Error(\"Unsupported Plugin version format: \" + supportedVersion + \", \" + pluginVersion);\n }\n if (supportedVersions[0] !== pluginVersions[0]) {\n throw new Error(\"Major version mismatch: [Plugin version \" + pluginVersion + \"], [Supported Version \" + supportedVersion + \"]\");\n }\n if (pluginVersions[1] < supportedVersions[1]) {\n throw new Error(\"Minor version mismatch: [Plugin version \" + pluginVersion + \"] < [Supported Version \" + supportedVersion + \"]\");\n }\n var tempContext = new AudioContext();\n var isSupported = plugin.isSupported(tempContext);\n tempContext.close();\n if (!isSupported) {\n throw new Error('Noise Cancellation plugin is not supported on your browser');\n }\n};\nvar audioProcessors = new Map();\nfunction createNoiseCancellationAudioProcessor(noiseCancellationOptions, log) {\n return __awaiter(this, void 0, void 0, function () {\n var audioProcessor, pluginConfig, supportedVersion, pluginFile, rootDir, sdkFilePath, dynamicModule, plugin_1, er_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n audioProcessor = audioProcessors.get(noiseCancellationOptions.vendor);\n if (!!audioProcessor) return [3 /*break*/, 6];\n pluginConfig = PLUGIN_CONFIG[noiseCancellationOptions.vendor];\n if (!pluginConfig) {\n throw new Error(\"Unsupported NoiseCancellationOptions.vendor: \" + noiseCancellationOptions.vendor);\n }\n supportedVersion = pluginConfig.supportedVersion, pluginFile = pluginConfig.pluginFile;\n rootDir = noiseCancellationOptions.sdkAssetsPath;\n sdkFilePath = rootDir + \"/\" + pluginFile;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 5, , 6]);\n log.debug('loading noise cancellation sdk: ', sdkFilePath);\n return [4 /*yield*/, dynamicImport(sdkFilePath)];\n case 2:\n dynamicModule = _a.sent();\n log.debug('Loaded noise cancellation sdk:', dynamicModule);\n plugin_1 = dynamicModule.default;\n ensureVersionSupported({\n supportedVersion: supportedVersion,\n plugin: plugin_1,\n log: log\n });\n if (!!plugin_1.isInitialized()) return [3 /*break*/, 4];\n log.debug('initializing noise cancellation sdk: ', rootDir);\n return [4 /*yield*/, plugin_1.init({ rootDir: rootDir })];\n case 3:\n _a.sent();\n log.debug('noise cancellation sdk initialized!');\n _a.label = 4;\n case 4:\n audioProcessor = {\n vendor: noiseCancellationOptions.vendor,\n isInitialized: function () { return plugin_1.isInitialized(); },\n isConnected: function () { return plugin_1.isConnected(); },\n isEnabled: function () { return plugin_1.isEnabled(); },\n disconnect: function () { return plugin_1.disconnect(); },\n enable: function () { return plugin_1.enable(); },\n disable: function () { return plugin_1.disable(); },\n destroy: function () { return plugin_1.destroy(); },\n setLogging: function (enable) { return plugin_1.setLogging(enable); },\n connect: function (sourceTrack) {\n log.debug('connect: ', sourceTrack.id);\n if (plugin_1.isConnected()) {\n plugin_1.disconnect();\n }\n var mediaStream = plugin_1.connect(new MediaStream([sourceTrack]));\n if (!mediaStream) {\n throw new Error('Error connecting with noise cancellation sdk');\n }\n var cleanTrack = mediaStream.getAudioTracks()[0];\n if (!cleanTrack) {\n throw new Error('Error getting clean track from noise cancellation sdk');\n }\n plugin_1.enable();\n return cleanTrack;\n },\n };\n audioProcessors.set(noiseCancellationOptions.vendor, audioProcessor);\n return [3 /*break*/, 6];\n case 5:\n er_1 = _a.sent();\n log.error(\"Error loading noise cancellation sdk:\" + sdkFilePath, er_1);\n throw er_1;\n case 6: return [2 /*return*/, audioProcessor];\n }\n });\n });\n}\nexports.createNoiseCancellationAudioProcessor = createNoiseCancellationAudioProcessor;\n//# sourceMappingURL=noisecancellationadapter.js.map","'use strict';\nmodule.exports = (function (scope) {\n var location = scope.location, URL = scope.URL;\n if ([location, URL].some(function (api) { return !api; })) {\n return function dynamicImportNotSupported(module) {\n return Promise.reject(new Error(\"Failed to import: \" + module + \": dynamicImport is not supported\"));\n };\n }\n scope.__twilioVideoImportedModules = {\n // Imported module map.\n };\n return function dynamicImport(module) {\n if (module in scope.__twilioVideoImportedModules) {\n return Promise.resolve(scope.__twilioVideoImportedModules[module]);\n }\n // NOTE(mmalavalli): Calling import() directly can cause build issues in TypeScript and Webpack\n // (and probably other frameworks). So, we create a Function that calls import() in its body.\n // eslint-disable-next-line no-new-func\n return new Function('scope', \"return import('\" + new URL(module, location) + \"').then(m => scope.__twilioVideoImportedModules['\" + module + \"'] = m);\")(scope);\n };\n}(globalThis));\n//# sourceMappingURL=dynamicimport.js.map","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar _a = require('./util'), flatMap = _a.flatMap, guessBrowser = _a.guessBrowser, guessBrowserVersion = _a.guessBrowserVersion;\nvar getSdpFormat = require('./util/sdp').getSdpFormat;\nvar guess = guessBrowser();\nvar guessVersion = guessBrowserVersion();\nvar isChrome = guess === 'chrome';\nvar isFirefox = guess === 'firefox';\nvar isSafari = guess === 'safari';\nvar chromeMajorVersion = isChrome ? guessVersion.major : null;\nvar CHROME_LEGACY_MAX_AUDIO_LEVEL = 32767;\n/**\n * Get the standardized {@link RTCPeerConnection} statistics.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.}\n */\nfunction getStats(peerConnection, options) {\n if (!(peerConnection && typeof peerConnection.getStats === 'function')) {\n return Promise.reject(new Error('Given PeerConnection does not support getStats'));\n }\n return _getStats(peerConnection, options);\n}\n/**\n * getStats() implementation.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options] - Used for testing\n * @returns {Promise.}\n */\nfunction _getStats(peerConnection, options) {\n var localAudioTracks = getTracks(peerConnection, 'audio', 'local');\n var localVideoTracks = getTracks(peerConnection, 'video', 'local');\n var remoteAudioTracks = getTracks(peerConnection, 'audio');\n var remoteVideoTracks = getTracks(peerConnection, 'video');\n var statsResponse = {\n activeIceCandidatePair: null,\n localAudioTrackStats: [],\n localVideoTrackStats: [],\n remoteAudioTrackStats: [],\n remoteVideoTrackStats: []\n };\n var trackStatsPromises = flatMap([\n [localAudioTracks, 'localAudioTrackStats', false],\n [localVideoTracks, 'localVideoTrackStats', false],\n [remoteAudioTracks, 'remoteAudioTrackStats', true],\n [remoteVideoTracks, 'remoteVideoTrackStats', true]\n ], function (_a) {\n var _b = __read(_a, 3), tracks = _b[0], statsArrayName = _b[1], isRemote = _b[2];\n return tracks.map(function (track) {\n return getTrackStats(peerConnection, track, Object.assign({ isRemote: isRemote }, options)).then(function (trackStatsArray) {\n trackStatsArray.forEach(function (trackStats) {\n trackStats.trackId = track.id;\n statsResponse[statsArrayName].push(trackStats);\n });\n });\n });\n });\n return Promise.all(trackStatsPromises).then(function () {\n return getActiveIceCandidatePairStats(peerConnection, options);\n }).then(function (activeIceCandidatePairStatsReport) {\n statsResponse.activeIceCandidatePair = activeIceCandidatePairStatsReport;\n return statsResponse;\n });\n}\n/**\n * Generate the {@link StandardizedActiveIceCandidatePairStatsReport} for the\n * {@link RTCPeerConnection}.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options]\n * @returns {Promise}\n */\nfunction getActiveIceCandidatePairStats(peerConnection, options) {\n if (options === void 0) { options = {}; }\n if (typeof options.testForChrome !== 'undefined' || isChrome\n || typeof options.testForSafari !== 'undefined' || isSafari) {\n return peerConnection.getStats().then(standardizeChromeOrSafariActiveIceCandidatePairStats);\n }\n if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n return peerConnection.getStats().then(standardizeFirefoxActiveIceCandidatePairStats);\n }\n return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Chrome or Safari.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeChromeOrSafariActiveIceCandidatePairStats(stats) {\n var activeCandidatePairStats = Array.from(stats.values()).find(function (_a) {\n var nominated = _a.nominated, type = _a.type;\n return type === 'candidate-pair' && nominated;\n });\n if (!activeCandidatePairStats) {\n return null;\n }\n var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n var standardizedCandidateStatsKeys = [\n { key: 'candidateType', type: 'string' },\n { key: 'ip', type: 'string' },\n { key: 'port', type: 'number' },\n { key: 'priority', type: 'number' },\n { key: 'protocol', type: 'string' },\n { key: 'url', type: 'string' }\n ];\n var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n { key: 'deleted', type: 'boolean' },\n { key: 'relayProtocol', type: 'string' }\n ]);\n var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n ? standardizedLocalCandidateStatsKeys.reduce(function (report, _a) {\n var key = _a.key, type = _a.type;\n report[key] = typeof activeLocalCandidateStats[key] === type\n ? activeLocalCandidateStats[key]\n : key === 'deleted' ? false : null;\n return report;\n }, {})\n : null;\n var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n ? standardizedCandidateStatsKeys.reduce(function (report, _a) {\n var key = _a.key, type = _a.type;\n report[key] = typeof activeRemoteCandidateStats[key] === type\n ? activeRemoteCandidateStats[key]\n : null;\n return report;\n }, {})\n : null;\n return [\n { key: 'availableIncomingBitrate', type: 'number' },\n { key: 'availableOutgoingBitrate', type: 'number' },\n { key: 'bytesReceived', type: 'number' },\n { key: 'bytesSent', type: 'number' },\n { key: 'consentRequestsSent', type: 'number' },\n { key: 'currentRoundTripTime', type: 'number' },\n { key: 'lastPacketReceivedTimestamp', type: 'number' },\n { key: 'lastPacketSentTimestamp', type: 'number' },\n { key: 'nominated', type: 'boolean' },\n { key: 'priority', type: 'number' },\n { key: 'readable', type: 'boolean' },\n { key: 'requestsReceived', type: 'number' },\n { key: 'requestsSent', type: 'number' },\n { key: 'responsesReceived', type: 'number' },\n { key: 'responsesSent', type: 'number' },\n { key: 'retransmissionsReceived', type: 'number' },\n { key: 'retransmissionsSent', type: 'number' },\n { key: 'state', type: 'string', fixup: function (state) { return state === 'inprogress' ? 'in-progress' : state; } },\n { key: 'totalRoundTripTime', type: 'number' },\n { key: 'transportId', type: 'string' },\n { key: 'writable', type: 'boolean' }\n ].reduce(function (report, _a) {\n var key = _a.key, type = _a.type, fixup = _a.fixup;\n report[key] = typeof activeCandidatePairStats[key] === type\n ? (fixup ? fixup(activeCandidatePairStats[key]) : activeCandidatePairStats[key])\n : null;\n return report;\n }, {\n localCandidate: standatdizedLocalCandidateStatsReport,\n remoteCandidate: standardizedRemoteCandidateStatsReport\n });\n}\n/**\n * Standardize the active RTCIceCandidate pair's statistics in Firefox.\n * @param {RTCStatsReport} stats\n * @returns {?StandardizedActiveIceCandidatePairStatsReport}\n */\nfunction standardizeFirefoxActiveIceCandidatePairStats(stats) {\n var activeCandidatePairStats = Array.from(stats.values()).find(function (_a) {\n var nominated = _a.nominated, type = _a.type;\n return type === 'candidate-pair' && nominated;\n });\n if (!activeCandidatePairStats) {\n return null;\n }\n var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n var standardizedCandidateStatsKeys = [\n { key: 'candidateType', type: 'string' },\n { key: 'ip', ffKeys: ['address', 'ipAddress'], type: 'string' },\n { key: 'port', ffKeys: ['portNumber'], type: 'number' },\n { key: 'priority', type: 'number' },\n { key: 'protocol', ffKeys: ['transport'], type: 'string' },\n { key: 'url', type: 'string' }\n ];\n var standardizedLocalCandidateStatsKeys = standardizedCandidateStatsKeys.concat([\n { key: 'deleted', type: 'boolean' },\n { key: 'relayProtocol', type: 'string' }\n ]);\n var candidateTypes = {\n host: 'host',\n peerreflexive: 'prflx',\n relayed: 'relay',\n serverreflexive: 'srflx'\n };\n var standatdizedLocalCandidateStatsReport = activeLocalCandidateStats\n ? standardizedLocalCandidateStatsKeys.reduce(function (report, _a) {\n var ffKeys = _a.ffKeys, key = _a.key, type = _a.type;\n var localStatKey = ffKeys && ffKeys.find(function (key) { return key in activeLocalCandidateStats; }) || key;\n report[key] = typeof activeLocalCandidateStats[localStatKey] === type\n ? localStatKey === 'candidateType'\n ? candidateTypes[activeLocalCandidateStats[localStatKey]] || activeLocalCandidateStats[localStatKey]\n : activeLocalCandidateStats[localStatKey]\n : localStatKey === 'deleted' ? false : null;\n return report;\n }, {})\n : null;\n var standardizedRemoteCandidateStatsReport = activeRemoteCandidateStats\n ? standardizedCandidateStatsKeys.reduce(function (report, _a) {\n var ffKeys = _a.ffKeys, key = _a.key, type = _a.type;\n var remoteStatKey = ffKeys && ffKeys.find(function (key) { return key in activeRemoteCandidateStats; }) || key;\n report[key] = typeof activeRemoteCandidateStats[remoteStatKey] === type\n ? remoteStatKey === 'candidateType'\n ? candidateTypes[activeRemoteCandidateStats[remoteStatKey]] || activeRemoteCandidateStats[remoteStatKey]\n : activeRemoteCandidateStats[remoteStatKey]\n : null;\n return report;\n }, {})\n : null;\n return [\n { key: 'availableIncomingBitrate', type: 'number' },\n { key: 'availableOutgoingBitrate', type: 'number' },\n { key: 'bytesReceived', type: 'number' },\n { key: 'bytesSent', type: 'number' },\n { key: 'consentRequestsSent', type: 'number' },\n { key: 'currentRoundTripTime', type: 'number' },\n { key: 'lastPacketReceivedTimestamp', type: 'number' },\n { key: 'lastPacketSentTimestamp', type: 'number' },\n { key: 'nominated', type: 'boolean' },\n { key: 'priority', type: 'number' },\n { key: 'readable', type: 'boolean' },\n { key: 'requestsReceived', type: 'number' },\n { key: 'requestsSent', type: 'number' },\n { key: 'responsesReceived', type: 'number' },\n { key: 'responsesSent', type: 'number' },\n { key: 'retransmissionsReceived', type: 'number' },\n { key: 'retransmissionsSent', type: 'number' },\n { key: 'state', type: 'string' },\n { key: 'totalRoundTripTime', type: 'number' },\n { key: 'transportId', type: 'string' },\n { key: 'writable', type: 'boolean' }\n ].reduce(function (report, _a) {\n var key = _a.key, type = _a.type;\n report[key] = typeof activeCandidatePairStats[key] === type\n ? activeCandidatePairStats[key]\n : null;\n return report;\n }, {\n localCandidate: standatdizedLocalCandidateStatsReport,\n remoteCandidate: standardizedRemoteCandidateStatsReport\n });\n}\n/**\n * Get local/remote audio/video MediaStreamTracks.\n * @param {RTCPeerConnection} peerConnection - The RTCPeerConnection\n * @param {string} kind - 'audio' or 'video'\n * @param {string} [localOrRemote] - 'local' or 'remote'\n * @returns {Array}\n */\nfunction getTracks(peerConnection, kind, localOrRemote) {\n var getSendersOrReceivers = localOrRemote === 'local' ? 'getSenders' : 'getReceivers';\n if (peerConnection[getSendersOrReceivers]) {\n return peerConnection[getSendersOrReceivers]()\n .map(function (_a) {\n var track = _a.track;\n return track;\n })\n .filter(function (track) { return track && track.kind === kind; });\n }\n var getStreams = localOrRemote === 'local' ? 'getLocalStreams' : 'getRemoteStreams';\n var getTracks = kind === 'audio' ? 'getAudioTracks' : 'getVideoTracks';\n return flatMap(peerConnection[getStreams](), function (stream) { return stream[getTracks](); });\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} [options] - Used for testing\n * @returns {Promise.>}\n */\nfunction getTrackStats(peerConnection, track, options) {\n if (options === void 0) { options = {}; }\n if (typeof options.testForChrome !== 'undefined' || isChrome) {\n return chromeOrSafariGetTrackStats(peerConnection, track, options);\n }\n if (typeof options.testForFirefox !== 'undefined' || isFirefox) {\n return firefoxGetTrackStats(peerConnection, track, options);\n }\n if (typeof options.testForSafari !== 'undefined' || isSafari) {\n if (typeof options.testForSafari !== 'undefined' || getSdpFormat() === 'unified') {\n return chromeOrSafariGetTrackStats(peerConnection, track, options);\n }\n // NOTE(syerrapragada): getStats() is not supported on\n // Safari versions where plan-b is the SDP format\n // due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601\n return Promise.reject(new Error([\n 'getStats() is not supported on this version of Safari',\n 'due to this bug: https://bugs.webkit.org/show_bug.cgi?id=192601'\n ].join(' ')));\n }\n return Promise.reject(new Error('RTCPeerConnection#getStats() not supported'));\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Chrome or Safari.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} options - Used for testing\n * @returns {Promise.>}\n */\nfunction chromeOrSafariGetTrackStats(peerConnection, track, options) {\n if (chromeMajorVersion && chromeMajorVersion < 67) {\n return new Promise(function (resolve, reject) {\n peerConnection.getStats(function (response) {\n resolve([standardizeChromeLegacyStats(response, track)]);\n }, null, reject);\n });\n }\n return peerConnection.getStats(track).then(function (response) {\n return standardizeChromeOrSafariStats(response, options);\n });\n}\n/**\n * Get the standardized statistics for a particular MediaStreamTrack in Firefox.\n * @param {RTCPeerConnection} peerConnection\n * @param {MediaStreamTrack} track\n * @param {object} options\n * @returns {Promise.>}\n */\nfunction firefoxGetTrackStats(peerConnection, track, options) {\n return peerConnection.getStats(track).then(function (response) {\n return [standardizeFirefoxStats(response, options)];\n });\n}\n/**\n * Standardize the MediaStreamTrack's legacy statistics in Chrome.\n * @param {RTCStatsResponse} response\n * @param {MediaStreamTrack} track\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeChromeLegacyStats(response, track) {\n var ssrcReport = response.result().find(function (report) {\n return report.type === 'ssrc' && report.stat('googTrackId') === track.id;\n });\n var standardizedStats = {};\n if (ssrcReport) {\n standardizedStats.timestamp = Math.round(Number(ssrcReport.timestamp));\n standardizedStats = ssrcReport.names().reduce(function (stats, name) {\n switch (name) {\n case 'googCodecName':\n stats.codecName = ssrcReport.stat(name);\n break;\n case 'googRtt':\n stats.roundTripTime = Number(ssrcReport.stat(name));\n break;\n case 'googJitterReceived':\n stats.jitter = Number(ssrcReport.stat(name));\n break;\n case 'googFrameWidthInput':\n stats.frameWidthInput = Number(ssrcReport.stat(name));\n break;\n case 'googFrameHeightInput':\n stats.frameHeightInput = Number(ssrcReport.stat(name));\n break;\n case 'googFrameWidthSent':\n stats.frameWidthSent = Number(ssrcReport.stat(name));\n break;\n case 'googFrameHeightSent':\n stats.frameHeightSent = Number(ssrcReport.stat(name));\n break;\n case 'googFrameWidthReceived':\n stats.frameWidthReceived = Number(ssrcReport.stat(name));\n break;\n case 'googFrameHeightReceived':\n stats.frameHeightReceived = Number(ssrcReport.stat(name));\n break;\n case 'googFrameRateInput':\n stats.frameRateInput = Number(ssrcReport.stat(name));\n break;\n case 'googFrameRateSent':\n stats.frameRateSent = Number(ssrcReport.stat(name));\n break;\n case 'googFrameRateReceived':\n stats.frameRateReceived = Number(ssrcReport.stat(name));\n break;\n case 'ssrc':\n stats[name] = ssrcReport.stat(name);\n break;\n case 'bytesReceived':\n case 'bytesSent':\n case 'packetsLost':\n case 'packetsReceived':\n case 'packetsSent':\n case 'audioInputLevel':\n case 'audioOutputLevel':\n stats[name] = Number(ssrcReport.stat(name));\n break;\n }\n return stats;\n }, standardizedStats);\n }\n return standardizedStats;\n}\n/**\n * Standardize the MediaStreamTrack's statistics in Chrome or Safari.\n * @param {RTCStatsResponse} response\n * @param {object} options - Used for testing\n * @returns {Array}\n */\nfunction standardizeChromeOrSafariStats(response, _a) {\n var _b = _a.simulateExceptionWhileStandardizingStats, simulateExceptionWhileStandardizingStats = _b === void 0 ? false : _b;\n if (simulateExceptionWhileStandardizingStats) {\n throw new Error('Error while gathering stats');\n }\n var inbound = null;\n // NOTE(mpatwardhan): We should expect more than one \"outbound-rtp\" stats for a\n // VP8 simulcast MediaStreamTrack.\n var outbound = [];\n var remoteInbound = null;\n var remoteOutbound = null;\n var track = null;\n var codec = null;\n var localMedia = null;\n response.forEach(function (stat) {\n var type = stat.type;\n switch (type) {\n case 'inbound-rtp':\n inbound = stat;\n break;\n case 'outbound-rtp':\n outbound.push(stat);\n break;\n case 'media-source':\n localMedia = stat;\n break;\n case 'track':\n track = stat;\n break;\n case 'codec':\n codec = stat;\n break;\n case 'remote-inbound-rtp':\n remoteInbound = stat;\n break;\n case 'remote-outbound-rtp':\n remoteOutbound = stat;\n break;\n }\n });\n var isRemote = track ? track.remoteSource : !localMedia;\n var mainSources = isRemote ? [inbound] : outbound;\n var stats = [];\n var remoteSource = isRemote ? remoteOutbound : remoteInbound; // remote rtp stats\n mainSources.forEach(function (source) {\n var standardizedStats = {};\n var statSources = [\n source,\n localMedia,\n track,\n codec,\n remoteSource && remoteSource.ssrc === source.ssrc ? remoteSource : null, // remote rtp stats\n ];\n function getStatValue(name) {\n var sourceFound = statSources.find(function (statSource) {\n return statSource && typeof statSource[name] !== 'undefined';\n }) || null;\n return sourceFound ? sourceFound[name] : null;\n }\n var ssrc = getStatValue('ssrc');\n if (typeof ssrc === 'number') {\n standardizedStats.ssrc = String(ssrc);\n }\n var timestamp = getStatValue('timestamp');\n standardizedStats.timestamp = Math.round(timestamp);\n var mimeType = getStatValue('mimeType');\n if (typeof mimeType === 'string') {\n mimeType = mimeType.split('/');\n standardizedStats.codecName = mimeType[mimeType.length - 1];\n }\n var roundTripTime = getStatValue('roundTripTime');\n if (typeof roundTripTime === 'number') {\n standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n }\n var jitter = getStatValue('jitter');\n if (typeof jitter === 'number') {\n standardizedStats.jitter = Math.round(jitter * 1000);\n }\n var frameWidth = getStatValue('frameWidth');\n if (typeof frameWidth === 'number') {\n if (isRemote) {\n standardizedStats.frameWidthReceived = frameWidth;\n }\n else {\n standardizedStats.frameWidthSent = frameWidth;\n standardizedStats.frameWidthInput = track ? track.frameWidth : localMedia.width;\n }\n }\n var frameHeight = getStatValue('frameHeight');\n if (typeof frameHeight === 'number') {\n if (isRemote) {\n standardizedStats.frameHeightReceived = frameHeight;\n }\n else {\n standardizedStats.frameHeightSent = frameHeight;\n standardizedStats.frameHeightInput = track ? track.frameHeight : localMedia.height;\n }\n }\n var framesPerSecond = getStatValue('framesPerSecond');\n if (typeof framesPerSecond === 'number') {\n standardizedStats[isRemote ? 'frameRateReceived' : 'frameRateSent'] = framesPerSecond;\n }\n var bytesReceived = getStatValue('bytesReceived');\n if (typeof bytesReceived === 'number') {\n standardizedStats.bytesReceived = bytesReceived;\n }\n var bytesSent = getStatValue('bytesSent');\n if (typeof bytesSent === 'number') {\n standardizedStats.bytesSent = bytesSent;\n }\n var packetsLost = getStatValue('packetsLost');\n if (typeof packetsLost === 'number') {\n standardizedStats.packetsLost = packetsLost;\n }\n var packetsReceived = getStatValue('packetsReceived');\n if (typeof packetsReceived === 'number') {\n standardizedStats.packetsReceived = packetsReceived;\n }\n var packetsSent = getStatValue('packetsSent');\n if (typeof packetsSent === 'number') {\n standardizedStats.packetsSent = packetsSent;\n }\n var audioLevel = getStatValue('audioLevel');\n if (typeof audioLevel === 'number') {\n audioLevel = Math.round(audioLevel * CHROME_LEGACY_MAX_AUDIO_LEVEL);\n if (isRemote) {\n standardizedStats.audioOutputLevel = audioLevel;\n }\n else {\n standardizedStats.audioInputLevel = audioLevel;\n }\n }\n var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n if (typeof totalPacketSendDalay === 'number') {\n standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n }\n var totalEncodeTime = getStatValue('totalEncodeTime');\n if (typeof totalEncodeTime === 'number') {\n standardizedStats.totalEncodeTime = totalEncodeTime;\n }\n var framesEncoded = getStatValue('framesEncoded');\n if (typeof framesEncoded === 'number') {\n standardizedStats.framesEncoded = framesEncoded;\n }\n var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n if (typeof estimatedPlayoutTimestamp === 'number') {\n standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n }\n var totalDecodeTime = getStatValue('totalDecodeTime');\n if (typeof totalDecodeTime === 'number') {\n standardizedStats.totalDecodeTime = totalDecodeTime;\n }\n var framesDecoded = getStatValue('framesDecoded');\n if (typeof framesDecoded === 'number') {\n standardizedStats.framesDecoded = framesDecoded;\n }\n var jitterBufferDelay = getStatValue('jitterBufferDelay');\n if (typeof jitterBufferDelay === 'number') {\n standardizedStats.jitterBufferDelay = jitterBufferDelay;\n }\n var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n if (typeof jitterBufferEmittedCount === 'number') {\n standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n }\n stats.push(standardizedStats);\n });\n return stats;\n}\n/**\n * Standardize the MediaStreamTrack's statistics in Firefox.\n * @param {RTCStatsReport} response\n * @param {object} options - Used for testing\n * @returns {StandardizedTrackStatsReport}\n */\nfunction standardizeFirefoxStats(response, _a) {\n if (response === void 0) { response = new Map(); }\n var isRemote = _a.isRemote, _b = _a.simulateExceptionWhileStandardizingStats, simulateExceptionWhileStandardizingStats = _b === void 0 ? false : _b;\n if (simulateExceptionWhileStandardizingStats) {\n throw new Error('Error while gathering stats');\n }\n // NOTE(mroberts): If getStats is called on a closed RTCPeerConnection,\n // Firefox returns undefined instead of an RTCStatsReport. We workaround this\n // here. See the following bug for more details:\n //\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1377225\n //\n var inbound = null;\n var outbound = null;\n // NOTE(mmalavalli): Starting from Firefox 63, RTC{Inbound, Outbound}RTPStreamStats.isRemote\n // will be deprecated, followed by its removal in Firefox 66. Also, trying to\n // access members of the remote RTC{Inbound, Outbound}RTPStreamStats without\n // using RTCStatsReport.get(remoteId) will trigger console warnings. So, we\n // no longer depend on \"isRemote\", and we call RTCStatsReport.get(remoteId)\n // to access the remote RTC{Inbound, Outbound}RTPStreamStats.\n //\n // Source: https://blog.mozilla.org/webrtc/getstats-isremote-65/\n //\n response.forEach(function (stat) {\n var isRemote = stat.isRemote, remoteId = stat.remoteId, type = stat.type;\n if (isRemote) {\n return;\n }\n switch (type) {\n case 'inbound-rtp':\n inbound = stat;\n outbound = response.get(remoteId);\n break;\n case 'outbound-rtp':\n outbound = stat;\n inbound = response.get(remoteId);\n break;\n }\n });\n var first = isRemote ? inbound : outbound;\n var second = isRemote ? outbound : inbound;\n function getStatValue(name) {\n if (first && typeof first[name] !== 'undefined') {\n return first[name];\n }\n if (second && typeof second[name] !== 'undefined') {\n return second[name];\n }\n return null;\n }\n var standardizedStats = {};\n var timestamp = getStatValue('timestamp');\n standardizedStats.timestamp = Math.round(timestamp);\n var ssrc = getStatValue('ssrc');\n if (typeof ssrc === 'number') {\n standardizedStats.ssrc = String(ssrc);\n }\n var bytesSent = getStatValue('bytesSent');\n if (typeof bytesSent === 'number') {\n standardizedStats.bytesSent = bytesSent;\n }\n var packetsLost = getStatValue('packetsLost');\n if (typeof packetsLost === 'number') {\n standardizedStats.packetsLost = packetsLost;\n }\n var packetsSent = getStatValue('packetsSent');\n if (typeof packetsSent === 'number') {\n standardizedStats.packetsSent = packetsSent;\n }\n var roundTripTime = getStatValue('roundTripTime');\n if (typeof roundTripTime === 'number') {\n // roundTripTime is double - measured in seconds.\n // https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats-roundtriptime\n // cover it to milliseconds (and make it integer)\n standardizedStats.roundTripTime = Math.round(roundTripTime * 1000);\n }\n var jitter = getStatValue('jitter');\n if (typeof jitter === 'number') {\n standardizedStats.jitter = Math.round(jitter * 1000);\n }\n var frameRateSent = getStatValue('framerateMean');\n if (typeof frameRateSent === 'number') {\n standardizedStats.frameRateSent = Math.round(frameRateSent);\n }\n var bytesReceived = getStatValue('bytesReceived');\n if (typeof bytesReceived === 'number') {\n standardizedStats.bytesReceived = bytesReceived;\n }\n var packetsReceived = getStatValue('packetsReceived');\n if (typeof packetsReceived === 'number') {\n standardizedStats.packetsReceived = packetsReceived;\n }\n var frameRateReceived = getStatValue('framerateMean');\n if (typeof frameRateReceived === 'number') {\n standardizedStats.frameRateReceived = Math.round(frameRateReceived);\n }\n var totalPacketSendDalay = getStatValue('totalPacketSendDelay');\n if (typeof totalPacketSendDalay === 'number') {\n standardizedStats.totalPacketSendDelay = totalPacketSendDalay;\n }\n var totalEncodeTime = getStatValue('totalEncodeTime');\n if (typeof totalEncodeTime === 'number') {\n standardizedStats.totalEncodeTime = totalEncodeTime;\n }\n var framesEncoded = getStatValue('framesEncoded');\n if (typeof framesEncoded === 'number') {\n standardizedStats.framesEncoded = framesEncoded;\n }\n var estimatedPlayoutTimestamp = getStatValue('estimatedPlayoutTimestamp');\n if (typeof estimatedPlayoutTimestamp === 'number') {\n standardizedStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n }\n var totalDecodeTime = getStatValue('totalDecodeTime');\n if (typeof totalDecodeTime === 'number') {\n standardizedStats.totalDecodeTime = totalDecodeTime;\n }\n var framesDecoded = getStatValue('framesDecoded');\n if (typeof framesDecoded === 'number') {\n standardizedStats.framesDecoded = framesDecoded;\n }\n var jitterBufferDelay = getStatValue('jitterBufferDelay');\n if (typeof jitterBufferDelay === 'number') {\n standardizedStats.jitterBufferDelay = jitterBufferDelay;\n }\n var jitterBufferEmittedCount = getStatValue('jitterBufferEmittedCount');\n if (typeof jitterBufferEmittedCount === 'number') {\n standardizedStats.jitterBufferEmittedCount = jitterBufferEmittedCount;\n }\n return standardizedStats;\n}\n/**\n * Standardized RTCIceCandidate statistics.\n * @typedef {object} StandardizedIceCandidateStatsReport\n * @property {'host'|'prflx'|'relay'|'srflx'} candidateType\n * @property {string} ip\n * @property {number} port\n * @property {number} priority\n * @property {'tcp'|'udp'} protocol\n * @property {string} url\n */\n/**\n * Standardized local RTCIceCandidate statistics.\n * @typedef {StandardizedIceCandidateStatsReport} StandardizedLocalIceCandidateStatsReport\n * @property {boolean} [deleted=false]\n * @property {'tcp'|'tls'|'udp'} relayProtocol\n */\n/**\n * Standardized active RTCIceCandidate pair statistics.\n * @typedef {object} StandardizedActiveIceCandidatePairStatsReport\n * @property {number} availableIncomingBitrate\n * @property {number} availableOutgoingBitrate\n * @property {number} bytesReceived\n * @property {number} bytesSent\n * @property {number} consentRequestsSent\n * @property {number} currentRoundTripTime\n * @property {number} lastPacketReceivedTimestamp\n * @property {number} lastPacketSentTimestamp\n * @property {StandardizedLocalIceCandidateStatsReport} localCandidate\n * @property {boolean} nominated\n * @property {number} priority\n * @property {boolean} readable\n * @property {StandardizedIceCandidateStatsReport} remoteCandidate\n * @property {number} requestsReceived\n * @property {number} requestsSent\n * @property {number} responsesReceived\n * @property {number} responsesSent\n * @property {number} retransmissionsReceived\n * @property {number} retransmissionsSent\n * @property {'frozen'|'waiting'|'in-progress'|'failed'|'succeeded'} state\n * @property {number} totalRoundTripTime\n * @property {string} transportId\n * @property {boolean} writable\n */\n/**\n * Standardized {@link RTCPeerConnection} statistics.\n * @typedef {Object} StandardizedStatsResponse\n * @property {StandardizedActiveIceCandidatePairStatsReport} activeIceCandidatePair - Stats for active ICE candidate pair\n * @property Array localAudioTrackStats - Stats for local audio MediaStreamTracks\n * @property Array localVideoTrackStats - Stats for local video MediaStreamTracks\n * @property Array remoteAudioTrackStats - Stats for remote audio MediaStreamTracks\n * @property Array remoteVideoTrackStats - Stats for remote video MediaStreamTracks\n */\n/**\n * Standardized MediaStreamTrack statistics.\n * @typedef {Object} StandardizedTrackStatsReport\n * @property {string} trackId - MediaStreamTrack ID\n * @property {string} ssrc - SSRC of the MediaStreamTrack\n * @property {number} timestamp - The Unix timestamp in milliseconds\n * @property {string} [codecName] - Name of the codec used to encode the MediaStreamTrack's media\n * @property {number} [roundTripTime] - Round trip time in milliseconds\n * @property {number} [jitter] - Jitter in milliseconds\n * @property {number} [frameWidthInput] - Width in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameHeightInput] - Height in pixels of the local video MediaStreamTrack's captured frame\n * @property {number} [frameWidthSent] - Width in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameHeightSent] - Height in pixels of the local video MediaStreamTrack's encoded frame\n * @property {number} [frameWidthReceived] - Width in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameHeightReceived] - Height in pixels of the remote video MediaStreamTrack's received frame\n * @property {number} [frameRateInput] - Captured frames per second of the local video MediaStreamTrack\n * @property {number} [frameRateSent] - Frames per second of the local video MediaStreamTrack's encoded video\n * @property {number} [frameRateReceived] - Frames per second of the remote video MediaStreamTrack's received video\n * @property {number} [bytesReceived] - Number of bytes of the remote MediaStreamTrack's media received\n * @property {number} [bytesSent] - Number of bytes of the local MediaStreamTrack's media sent\n * @property {number} [packetsLost] - Number of packets of the MediaStreamTrack's media lost\n * @property {number} [packetsReceived] - Number of packets of the remote MediaStreamTrack's media received\n * @property {number} [packetsSent] - Number of packets of the local MediaStreamTrack's media sent\n * @property {number} [totalPacketSendDelay] - The total number of seconds that the local MediaStreamTrack's packets\n * have spent buffered locally before being sent over the network\n * @property {number} [totalEncodeTime] - The total number of seconds spent on encoding the local MediaStreamTrack's frames\n * @property {number} [framesEncoded] - The total number of frames of the local MediaStreamTrack that have been encoded sor far\n * @property {number} [estimatedPlayoutTimestamp] - The estimated playout time of the remote MediaStreamTrack\n * @property {number} [totalDecodeTime] - The total number of seconds spent on decoding the remote MediaStreamTrack's frames\n * @property {number} [framesDecoded] - The total number of frames of the remote MediaStreamTrack that have been decoded sor far\n * @property {number} [jitterBufferDelay] - The sum of the time, in seconds, each audio sample or a video frame of the remote\n * MediaStreamTrack takes from the time the first packet is received by the jitter buffer to the time it exits the jitter buffer\n * @property {number} [jitterBufferEmittedCount] - The total number of audio samples or video frames that have come out of the jitter buffer\n * @property {AudioLevel} [audioInputLevel] - The {@link AudioLevel} of the local audio MediaStreamTrack\n * @property {AudioLevel} [audioOutputLevel] - The {@link AudioLevel} of the remote video MediaStreamTrack\n */\nmodule.exports = getStats;\n//# sourceMappingURL=getstats.js.map","/* globals navigator */\n'use strict';\n/**\n * This function is very similar to navigator.mediaDevices.getUserMedia\n * except that if no MediaStreamConstraints are provided, then bot audio and video\n * are requested.\n * @function getUserMedia\n * @param {MediaStreamConstraints} [constraints={audio:true,video:true}] - the\n * MediaStreamConstraints object specifying what kind of MediaStream to\n * request from the browser (by default both audio and video)\n * @returns Promise\n */\nfunction getUserMedia(constraints) {\n if (constraints === void 0) { constraints = { audio: true, video: true }; }\n if (typeof navigator === 'object'\n && typeof navigator.mediaDevices === 'object'\n && typeof navigator.mediaDevices.getUserMedia === 'function') {\n return navigator.mediaDevices.getUserMedia(constraints);\n }\n return Promise.reject(new Error('getUserMedia is not supported'));\n}\nmodule.exports = getUserMedia;\n//# sourceMappingURL=getusermedia.js.map","/* global MediaStreamTrack */\n'use strict';\nif (typeof MediaStreamTrack === 'function') {\n module.exports = MediaStreamTrack;\n}\nelse {\n module.exports = function MediaStreamTrack() {\n throw new Error('MediaStreamTrack is not supported');\n };\n}\n//# sourceMappingURL=mediastreamtrack.js.map","/* global RTCIceCandidate */\n'use strict';\nif (typeof RTCIceCandidate === 'function') {\n module.exports = RTCIceCandidate;\n}\nelse {\n module.exports = function RTCIceCandidate() {\n throw new Error('RTCIceCandidate is not supported');\n };\n}\n//# sourceMappingURL=rtcicecandidate.js.map","'use strict';\nif (typeof RTCPeerConnection === 'function') {\n var guessBrowser = require('../util').guessBrowser;\n switch (guessBrowser()) {\n case 'chrome':\n module.exports = require('./chrome');\n break;\n case 'firefox':\n module.exports = require('./firefox');\n break;\n case 'safari':\n module.exports = require('./safari');\n break;\n default:\n module.exports = RTCPeerConnection;\n break;\n }\n}\nelse {\n module.exports = function RTCPeerConnection() {\n throw new Error('RTCPeerConnection is not supported');\n };\n}\n//# sourceMappingURL=index.js.map","/* globals RTCDataChannel, RTCPeerConnection, RTCSessionDescription */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar ChromeRTCSessionDescription = require('../rtcsessiondescription/chrome');\nvar EventTarget = require('../../eventtarget');\nvar Latch = require('../util/latch');\nvar MediaStream = require('../mediastream');\nvar RTCRtpSenderShim = require('../rtcrtpsender');\nvar _a = require('../util/sdp'), getSdpFormat = _a.getSdpFormat, updatePlanBTrackIdsToSSRCs = _a.updatePlanBTrackIdsToSSRCs, updateUnifiedPlanTrackIdsToSSRCs = _a.updateUnifiedPlanTrackIdsToSSRCs;\nvar _b = require('../util'), delegateMethods = _b.delegateMethods, interceptEvent = _b.interceptEvent, isIOSChrome = _b.isIOSChrome, legacyPromise = _b.legacyPromise, proxyProperties = _b.proxyProperties;\nvar isUnifiedPlan = getSdpFormat() === 'unified';\n// NOTE(mroberts): This class wraps Chrome's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Chrome, namely the\n// abilities to\n//\n// 1. Rollback, per the workaround suggested here:\n// https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n//\n// 2. Listen for track events, per the adapter.js workaround.\n//\n// 3. Set iceTransportPolicy.\n//\nvar ChromeRTCPeerConnection = /** @class */ (function (_super) {\n __extends(ChromeRTCPeerConnection, _super);\n function ChromeRTCPeerConnection(configuration, constraints) {\n if (configuration === void 0) { configuration = {}; }\n var _this = _super.call(this) || this;\n var newConfiguration = Object.assign(configuration.iceTransportPolicy\n ? { iceTransports: configuration.iceTransportPolicy }\n : {}, configuration);\n interceptEvent(_this, 'datachannel');\n interceptEvent(_this, 'signalingstatechange');\n var sdpFormat = getSdpFormat(newConfiguration.sdpSemantics);\n var peerConnection = new RTCPeerConnection(newConfiguration, constraints);\n Object.defineProperties(_this, {\n _appliedTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _localStream: {\n value: new MediaStream()\n },\n _peerConnection: {\n value: peerConnection\n },\n _pendingLocalOffer: {\n value: null,\n writable: true\n },\n _pendingRemoteOffer: {\n value: null,\n writable: true\n },\n _rolledBackTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _sdpFormat: {\n value: sdpFormat\n },\n _senders: {\n value: new Map()\n },\n _signalingStateLatch: {\n value: new Latch()\n },\n _tracksToSSRCs: {\n value: new Map(),\n writable: true\n }\n });\n peerConnection.addEventListener('datachannel', function (event) {\n shimDataChannel(event.channel);\n _this.dispatchEvent(event);\n });\n peerConnection.addEventListener('signalingstatechange', function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (peerConnection.signalingState === 'stable') {\n _this._appliedTracksToSSRCs = new Map(_this._tracksToSSRCs);\n }\n if (!_this._pendingLocalOffer && !_this._pendingRemoteOffer) {\n _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n }\n });\n peerConnection.ontrack = function () {\n // NOTE(mroberts): adapter.js's \"track\" event shim only kicks off if we set\n // the ontrack property of the RTCPeerConnection.\n };\n if (typeof peerConnection.addTrack !== 'function') {\n peerConnection.addStream(_this._localStream);\n }\n proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n return _this;\n }\n Object.defineProperty(ChromeRTCPeerConnection.prototype, \"localDescription\", {\n get: function () {\n return this._pendingLocalOffer ? this._pendingLocalOffer : this._peerConnection.localDescription;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ChromeRTCPeerConnection.prototype, \"remoteDescription\", {\n get: function () {\n return this._pendingRemoteOffer ? this._pendingRemoteOffer : this._peerConnection.remoteDescription;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ChromeRTCPeerConnection.prototype, \"signalingState\", {\n get: function () {\n if (this._pendingLocalOffer) {\n return 'have-local-offer';\n }\n else if (this._pendingRemoteOffer) {\n return 'have-remote-offer';\n }\n return this._peerConnection.signalingState;\n },\n enumerable: false,\n configurable: true\n });\n // NOTE(mmalavalli): This shim supports our limited case of adding\n // all MediaStreamTracks to one MediaStream. It has been implemented this\n // keeping in mind that this is to be maintained only until \"addTrack\" is\n // supported natively in Chrome.\n ChromeRTCPeerConnection.prototype.addTrack = function (track) {\n var _a;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n if (typeof this._peerConnection.addTrack === 'function') {\n return (_a = this._peerConnection).addTrack.apply(_a, __spreadArray([track], __read(rest)));\n }\n if (this._peerConnection.signalingState === 'closed') {\n throw new Error(\"Cannot add MediaStreamTrack [\" + track.id + \", \\n \" + track.kind + \"]: RTCPeerConnection is closed\");\n }\n var sender = this._senders.get(track);\n if (sender && sender.track) {\n throw new Error(\"Cannot add MediaStreamTrack ['\" + track.id + \", \\n \" + track.kind + \"]: RTCPeerConnection already has it\");\n }\n this._peerConnection.removeStream(this._localStream);\n this._localStream.addTrack(track);\n this._peerConnection.addStream(this._localStream);\n sender = new RTCRtpSenderShim(track);\n this._senders.set(track, sender);\n return sender;\n };\n // NOTE(mmalavalli): This shim supports our limited case of removing\n // MediaStreamTracks from one MediaStream. It has been implemented this\n // keeping in mind that this is to be maintained only until \"removeTrack\" is\n // supported natively in Chrome.\n ChromeRTCPeerConnection.prototype.removeTrack = function (sender) {\n if (this._peerConnection.signalingState === 'closed') {\n throw new Error('Cannot remove MediaStreamTrack: RTCPeerConnection is closed');\n }\n if (typeof this._peerConnection.addTrack === 'function') {\n try {\n return this._peerConnection.removeTrack(sender);\n }\n catch (e) {\n // NOTE(mhuynh): Do nothing. In Chrome, will throw if a 'sender was not\n // created by this peer connection'. This behavior does not seem to be\n // spec compliant, so a temporary shim is introduced. A bug has been filed,\n // and is tracked here:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=860853\n }\n }\n else {\n var track = sender.track;\n if (!track) {\n return;\n }\n sender = this._senders.get(track);\n if (sender && sender.track) {\n sender.track = null;\n this._peerConnection.removeStream(this._localStream);\n this._localStream.removeTrack(track);\n this._peerConnection.addStream(this._localStream);\n }\n }\n };\n ChromeRTCPeerConnection.prototype.getSenders = function () {\n if (typeof this._peerConnection.addTrack === 'function') {\n return this._peerConnection.getSenders();\n }\n return Array.from(this._senders.values());\n };\n ChromeRTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n var _this = this;\n var rest = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n var promise;\n if (this.signalingState === 'have-remote-offer') {\n // NOTE(mroberts): Because the ChromeRTCPeerConnection simulates the\n // \"have-remote-offer\" signalingStates, we only want to invoke the true\n // addIceCandidates method when the remote description has been applied.\n promise = this._signalingStateLatch.when('low').then(function () {\n return _this._peerConnection.addIceCandidate(candidate);\n });\n }\n else {\n promise = this._peerConnection.addIceCandidate(candidate);\n }\n return rest.length > 0\n ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest))) : promise;\n };\n // NOTE(mroberts): The WebRTC spec does not specify that close should throw an\n // Error; however, in Chrome it does. We workaround this by checking the\n // signalingState manually.\n ChromeRTCPeerConnection.prototype.close = function () {\n if (this.signalingState !== 'closed') {\n this._pendingLocalOffer = null;\n this._pendingRemoteOffer = null;\n this._peerConnection.close();\n }\n };\n // NOTE(mroberts): Because we workaround Chrome's lack of rollback support by\n // \"faking\" setRemoteDescription, we cannot create an answer until we actually\n // apply the remote description. This means, once you call createAnswer, you\n // can no longer rollback. This is acceptable for our use case because we will\n // apply the newly-created answer almost immediately; however, this may be\n // unacceptable for other use cases.\n ChromeRTCPeerConnection.prototype.createAnswer = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var promise;\n if (this._pendingRemoteOffer) {\n promise = this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function () {\n // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n // and the underlying RTCPeerConnection implementation have converged. We\n // can unblock any pending calls to addIceCandidate now.\n _this._signalingStateLatch.lower();\n return _this._peerConnection.createAnswer();\n }).then(function (answer) {\n _this._pendingRemoteOffer = null;\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n _this._rolledBackTracksToSSRCs.clear();\n return new ChromeRTCSessionDescription({\n type: 'answer',\n sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, answer.sdp)\n });\n }, function (error) {\n _this._pendingRemoteOffer = null;\n throw error;\n });\n }\n else {\n promise = this._peerConnection.createAnswer().then(function (answer) {\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n _this._rolledBackTracksToSSRCs.clear();\n return new ChromeRTCSessionDescription({\n type: 'answer',\n sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, answer.sdp)\n });\n });\n }\n return args.length > 1\n ? legacyPromise.apply(void 0, __spreadArray([promise], __read(args))) : promise;\n };\n ChromeRTCPeerConnection.prototype.createOffer = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = __read(args, 3), arg1 = _a[0], arg2 = _a[1], arg3 = _a[2];\n var options = arg3 || arg1 || {};\n if (isIOSChrome()) {\n // NOTE (joma): From SafariRTCPeerConnection in order to support iOS Chrome.\n if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n delete options.offerToReceiveAudio;\n try {\n this._audioTransceiver = isUnifiedPlan\n ? this.addTransceiver('audio', { direction: 'recvonly' })\n : this.addTransceiver('audio');\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n delete options.offerToReceiveVideo;\n try {\n this._videoTransceiver = isUnifiedPlan\n ? this.addTransceiver('video', { direction: 'recvonly' })\n : this.addTransceiver('video');\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n }\n var promise = this._peerConnection.createOffer(options).then(function (offer) {\n // NOTE(mmalavalli): If createOffer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n _this._rolledBackTracksToSSRCs.clear();\n return new ChromeRTCSessionDescription({\n type: offer.type,\n sdp: updateTrackIdsToSSRCs(_this._sdpFormat, _this._tracksToSSRCs, offer.sdp)\n });\n });\n return args.length > 1\n ? legacyPromise(promise, arg1, arg2)\n : promise;\n };\n ChromeRTCPeerConnection.prototype.createDataChannel = function (label, dataChannelDict) {\n dataChannelDict = shimDataChannelInit(dataChannelDict);\n var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n shimDataChannel(dataChannel);\n return dataChannel;\n };\n ChromeRTCPeerConnection.prototype.setLocalDescription = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = __read(args, 3), description = _a[0], arg1 = _a[1], arg2 = _a[2];\n // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n // then we need to restore the rolled back tracks to SSRCs Map.\n if (this._rolledBackTracksToSSRCs.size > 0) {\n this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n this._rolledBackTracksToSSRCs.clear();\n }\n var promise = setDescription(this, true, description);\n return args.length > 1\n ? legacyPromise(promise, arg1, arg2)\n : promise;\n };\n ChromeRTCPeerConnection.prototype.setRemoteDescription = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = __read(args, 3), description = _a[0], arg1 = _a[1], arg2 = _a[2];\n // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n // then we no longer need to retain the rolled back tracks to SSRCs Map.\n this._rolledBackTracksToSSRCs.clear();\n var promise = setDescription(this, false, description);\n return args.length > 1\n ? legacyPromise(promise, arg1, arg2)\n : promise;\n };\n return ChromeRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, ChromeRTCPeerConnection.prototype, '_peerConnection');\n// NOTE(mroberts): We workaround Chrome's lack of rollback support, per the\n// workaround suggested here: https://bugs.chromium.org/p/webrtc/issues/detail?id=5738#c3\n// Namely, we \"fake\" setting the local or remote description and instead buffer\n// it. If we receive or create an answer, then we will actually apply the\n// description. Until we receive or create an answer, we will be able to\n// \"rollback\" by simply discarding the buffer description.\nfunction setDescription(peerConnection, local, description) {\n function setPendingLocalOffer(offer) {\n if (local) {\n peerConnection._pendingLocalOffer = offer;\n }\n else {\n peerConnection._pendingRemoteOffer = offer;\n }\n }\n function clearPendingLocalOffer() {\n if (local) {\n peerConnection._pendingLocalOffer = null;\n }\n else {\n peerConnection._pendingRemoteOffer = null;\n }\n }\n var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n var promise;\n if (!local && pendingRemoteOffer && description.type === 'answer') {\n promise = setRemoteAnswer(peerConnection, description);\n }\n else if (description.type === 'offer') {\n if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n // NOTE(mroberts): Error message copied from Firefox.\n return Promise.reject(new Error(\"Cannot set \" + (local ? 'local' : 'remote') + \" offer in state \" + peerConnection.signalingState));\n }\n // We need to save this local offer in case of a rollback. We also need to\n // check to see if the signalingState between the ChromeRTCPeerConnection\n // and the underlying RTCPeerConnection implementation are about to diverge.\n // If so, we need to ensure subsequent calls to addIceCandidate will block.\n if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n peerConnection._signalingStateLatch.raise();\n }\n var previousSignalingState = peerConnection.signalingState;\n setPendingLocalOffer(unwrap(description));\n promise = Promise.resolve();\n // Only dispatch a signalingstatechange event if we transitioned.\n if (peerConnection.signalingState !== previousSignalingState) {\n promise.then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n }\n }\n else if (description.type === 'rollback') {\n if (peerConnection.signalingState !== intermediateState) {\n // NOTE(mroberts): Error message copied from Firefox.\n promise = Promise.reject(new Error(\"Cannot rollback \" + (local ? 'local' : 'remote') + \" description in \" + peerConnection.signalingState));\n }\n else {\n // Reset the pending offer.\n clearPendingLocalOffer();\n // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n // setLocalDescription() is called immediately after a rollback (without calling\n // createOffer() or createAnswer()), in which case this roll back is not due to a\n // glare scenario and this Map should be restored.\n peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n promise = Promise.resolve();\n promise.then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n }\n }\n return promise || peerConnection._peerConnection[setLocalDescription](unwrap(description));\n}\nfunction setRemoteAnswer(peerConnection, answer) {\n // Apply the pending local offer.\n var pendingLocalOffer = peerConnection._pendingLocalOffer;\n return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function () {\n peerConnection._pendingLocalOffer = null;\n return peerConnection.setRemoteDescription(answer);\n }).then(function () {\n // NOTE(mroberts): The signalingStates between the ChromeRTCPeerConnection\n // and the underlying RTCPeerConnection implementation have converged. We\n // can unblock any pending calls to addIceCandidate now.\n peerConnection._signalingStateLatch.lower();\n });\n}\n/**\n * Whether a ChromeRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {ChromeRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\nfunction hasReceiversForTracksOfKind(peerConnection, kind) {\n return !!peerConnection.getTransceivers().find(function (_a) {\n var _b = _a.receiver, receiver = _b === void 0 ? {} : _b;\n var _c = receiver.track, track = _c === void 0 ? {} : _c;\n return track.kind === kind;\n });\n}\nfunction unwrap(description) {\n if (description instanceof ChromeRTCSessionDescription) {\n if (description._description) {\n return description._description;\n }\n }\n return new RTCSessionDescription(description);\n}\n/**\n * Check whether or not we need to apply our maxPacketLifeTime shim. We are\n * pretty conservative: we'll only apply it if the legacy maxRetransmitTime\n * property is available _and_ the standard maxPacketLifeTime property is _not_\n * available (the thinking being that Chrome will land the standards-compliant\n * property).\n * @returns {boolean}\n */\nfunction needsMaxPacketLifeTimeShim() {\n return 'maxRetransmitTime' in RTCDataChannel.prototype\n && !('maxPacketLifeTime' in RTCDataChannel.prototype);\n}\n/**\n * Shim an RTCDataChannelInit dictionary (if necessary). This function returns\n * a copy of the original RTCDataChannelInit.\n * @param {RTCDataChannelInit} dataChannelDict\n * @returns {RTCDataChannelInit}\n */\nfunction shimDataChannelInit(dataChannelDict) {\n dataChannelDict = Object.assign({}, dataChannelDict);\n if (needsMaxPacketLifeTimeShim() && 'maxPacketLifeTime' in dataChannelDict) {\n dataChannelDict.maxRetransmitTime = dataChannelDict.maxPacketLifeTime;\n }\n return dataChannelDict;\n}\n/**\n * Shim an RTCDataChannel (if necessary). This function mutates the\n * RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n Object.defineProperty(dataChannel, 'maxRetransmits', {\n value: dataChannel.maxRetransmits === 65535\n ? null\n : dataChannel.maxRetransmits\n });\n if (needsMaxPacketLifeTimeShim()) {\n // NOTE(mroberts): We can rename `maxRetransmitTime` to `maxPacketLifeTime`.\n //\n // https://bugs.chromium.org/p/chromium/issues/detail?id=696681\n //\n Object.defineProperty(dataChannel, 'maxPacketLifeTime', {\n value: dataChannel.maxRetransmitTime === 65535\n ? null\n : dataChannel.maxRetransmitTime\n });\n }\n return dataChannel;\n}\n/**\n * Update the mappings from MediaStreamTrack IDs to SSRCs as indicated by both\n * the Map from MediaStreamTrack IDs to SSRCs and the SDP itself. This method\n * ensures that SSRCs never change once announced.\n * @param {'planb'|'unified'} sdpFormat\n * @param {Map>} tracksToSSRCs\n * @param {string} sdp - an SDP whose format is determined by `sdpSemantics`\n * @returns {string} updatedSdp - updated SDP\n */\nfunction updateTrackIdsToSSRCs(sdpFormat, tracksToSSRCs, sdp) {\n return sdpFormat === 'unified'\n ? updateUnifiedPlanTrackIdsToSSRCs(tracksToSSRCs, sdp)\n : updatePlanBTrackIdsToSSRCs(tracksToSSRCs, sdp);\n}\nmodule.exports = ChromeRTCPeerConnection;\n//# sourceMappingURL=chrome.js.map","'use strict';\n/**\n * RTCRtpSender shim.\n * @param {MediaStreamTrack} track\n * @property {MediaStreamTrack} track\n */\nvar RTCRtpSenderShim = /** @class */ (function () {\n function RTCRtpSenderShim(track) {\n Object.defineProperties(this, {\n track: {\n enumerable: true,\n value: track,\n writable: true\n }\n });\n }\n return RTCRtpSenderShim;\n}());\n// NOTE(mmalavalli): Because of the way we will be using this shim, there\n// are a couple of use cases that will not be covered:\n//\n// /* Case 1 */\n// const sender = pc.addTrack(track);\n// assert.equal(sender.track, track);\n// pc.removeTrack(sender);\n// assert.equal(sender.track, null); /* Error */\n//\n// /* Case 2 */\n// const sender = pc.addTrack(track);\n// const senders1 = new Set(pc.getSenders());\n// assert(senders1.has(sender));\n// pc.removeTrack(track);\n// const senders2 = new Set(pc.getSenders());\n// assert(senders2.has(sender)); /* Error */\n//\n// For now, since we only use senders for passing them to RTCPeerConnection#removeTrack(),\n// we will omit handling these use cases for now, and revisit them when we start\n// using the RTCRtpSender APIs.\nmodule.exports = RTCRtpSenderShim;\n//# sourceMappingURL=rtcrtpsender.js.map","/* globals RTCPeerConnection */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar EventTarget = require('../../eventtarget');\nvar FirefoxRTCSessionDescription = require('../rtcsessiondescription/firefox');\nvar updateTracksToSSRCs = require('../util/sdp').updateUnifiedPlanTrackIdsToSSRCs;\nvar _a = require('../util'), delegateMethods = _a.delegateMethods, interceptEvent = _a.interceptEvent, legacyPromise = _a.legacyPromise, proxyProperties = _a.proxyProperties;\n// NOTE(mroberts): This class wraps Firefox's RTCPeerConnection implementation.\n// It provides some functionality not currently present in Firefox, namely the\n// abilities to\n//\n// 1. Call setLocalDescription and setRemoteDescription with new offers in\n// signalingStates \"have-local-offer\" and \"have-remote-offer\",\n// respectively.\n//\n// 2. The ability to call createOffer in signalingState \"have-local-offer\".\n//\n// Both of these are implemented using rollbacks to workaround the following\n// bug:\n//\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1072388\n//\n// We also provide a workaround for a bug where Firefox may change the\n// previously-negotiated DTLS role in an answer, which breaks Chrome:\n//\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1240897\n//\nvar FirefoxRTCPeerConnection = /** @class */ (function (_super) {\n __extends(FirefoxRTCPeerConnection, _super);\n function FirefoxRTCPeerConnection(configuration) {\n var _this = _super.call(this) || this;\n interceptEvent(_this, 'signalingstatechange');\n /* eslint new-cap:0 */\n var peerConnection = new RTCPeerConnection(configuration);\n Object.defineProperties(_this, {\n _initiallyNegotiatedDtlsRole: {\n value: null,\n writable: true\n },\n _isClosed: {\n value: false,\n writable: true\n },\n _peerConnection: {\n value: peerConnection\n },\n _rollingBack: {\n value: false,\n writable: true\n },\n _tracksToSSRCs: {\n value: new Map()\n },\n // NOTE(mmalavalli): Firefox throws a TypeError when the PeerConnection's\n // prototype's \"peerIdentity\" property is accessed. In order to overcome\n // this, we ignore this property while delegating methods.\n // Reference: https://bugzilla.mozilla.org/show_bug.cgi?id=1363815\n peerIdentity: {\n enumerable: true,\n value: Promise.resolve({\n idp: '',\n name: ''\n })\n }\n });\n var previousSignalingState;\n peerConnection.addEventListener('signalingstatechange', function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!_this._rollingBack && _this.signalingState !== previousSignalingState) {\n previousSignalingState = _this.signalingState;\n // NOTE(mmalavalli): In Firefox, 'signalingstatechange' event is\n // triggered synchronously in the same tick after\n // RTCPeerConnection#close() is called. So we mimic Chrome's behavior\n // by triggering 'signalingstatechange' on the next tick.\n if (_this._isClosed) {\n setTimeout(function () { return _this.dispatchEvent.apply(_this, __spreadArray([], __read(args))); });\n }\n else {\n _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n }\n }\n });\n proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n return _this;\n }\n Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"iceGatheringState\", {\n get: function () {\n return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"localDescription\", {\n get: function () {\n return overwriteWithInitiallyNegotiatedDtlsRole(this._peerConnection.localDescription, this._initiallyNegotiatedDtlsRole);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FirefoxRTCPeerConnection.prototype, \"signalingState\", {\n get: function () {\n return this._isClosed ? 'closed' : this._peerConnection.signalingState;\n },\n enumerable: false,\n configurable: true\n });\n FirefoxRTCPeerConnection.prototype.createAnswer = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var promise;\n promise = this._peerConnection.createAnswer().then(function (answer) {\n saveInitiallyNegotiatedDtlsRole(_this, answer);\n return overwriteWithInitiallyNegotiatedDtlsRole(answer, _this._initiallyNegotiatedDtlsRole);\n });\n return typeof args[0] === 'function'\n ? legacyPromise.apply(void 0, __spreadArray([promise], __read(args))) : promise;\n };\n // NOTE(mroberts): The WebRTC spec allows you to call createOffer from any\n // signalingState other than \"closed\"; however, Firefox has not yet implemented\n // this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388). We workaround\n // this by rolling back if we are in state \"have-local-offer\" or\n // \"have-remote-offer\". This is acceptable for our use case because we will\n // apply the newly-created offer almost immediately; however, this may be\n // unacceptable for other use cases.\n FirefoxRTCPeerConnection.prototype.createOffer = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = __read(args, 3), arg1 = _a[0], arg2 = _a[1], arg3 = _a[2];\n var options = arg3 || arg1 || {};\n var promise;\n if (this.signalingState === 'have-local-offer' ||\n this.signalingState === 'have-remote-offer') {\n var local = this.signalingState === 'have-local-offer';\n promise = rollback(this, local, function () { return _this.createOffer(options); });\n }\n else {\n promise = this._peerConnection.createOffer(options);\n }\n promise = promise.then(function (offer) {\n return new FirefoxRTCSessionDescription({\n type: offer.type,\n sdp: updateTracksToSSRCs(_this._tracksToSSRCs, offer.sdp)\n });\n });\n return args.length > 1\n ? legacyPromise(promise, arg1, arg2)\n : promise;\n };\n // NOTE(mroberts): While Firefox will reject the Promise returned by\n // setLocalDescription when called from signalingState \"have-local-offer\" with\n // an answer, it still updates the .localDescription property. We workaround\n // this by explicitly handling this case.\n FirefoxRTCPeerConnection.prototype.setLocalDescription = function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _b = __read(args), description = _b[0], rest = _b.slice(1);\n var promise;\n if (description && description.type === 'answer' && this.signalingState === 'have-local-offer') {\n promise = Promise.reject(new Error('Cannot set local answer in state have-local-offer'));\n }\n if (promise) {\n return args.length > 1\n ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest))) : promise;\n }\n return (_a = this._peerConnection).setLocalDescription.apply(_a, __spreadArray([], __read(args)));\n };\n // NOTE(mroberts): The WebRTC spec allows you to call setRemoteDescription with\n // an offer multiple times in signalingState \"have-remote-offer\"; however,\n // Firefox has not yet implemented this (https://bugzilla.mozilla.org/show_bug.cgi?id=1072388).\n // We workaround this by rolling back if we are in state \"have-remote-offer\".\n // This is acceptable for our use case; however, this may be unacceptable for\n // other use cases.\n //\n // While Firefox will reject the Promise returned by setRemoteDescription when\n // called from signalingState \"have-remote-offer\" with an answer, it sill\n // updates the .remoteDescription property. We workaround this by explicitly\n // handling this case.\n FirefoxRTCPeerConnection.prototype.setRemoteDescription = function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _a = __read(args), description = _a[0], rest = _a.slice(1);\n var promise;\n if (description && this.signalingState === 'have-remote-offer') {\n if (description.type === 'answer') {\n promise = Promise.reject(new Error('Cannot set remote answer in state have-remote-offer'));\n }\n else if (description.type === 'offer') {\n promise = rollback(this, false, function () { return _this._peerConnection.setRemoteDescription(description); });\n }\n }\n if (!promise) {\n promise = this._peerConnection.setRemoteDescription(description);\n }\n promise = promise.then(function () { return saveInitiallyNegotiatedDtlsRole(_this, description, true); });\n return args.length > 1\n ? legacyPromise.apply(void 0, __spreadArray([promise], __read(rest))) : promise;\n };\n // NOTE(mroberts): The WebRTC spec specifies that the PeerConnection's internal\n // isClosed slot should immediately be set to true; however, in Firefox it\n // occurs in the next tick. We workaround this by tracking isClosed manually.\n FirefoxRTCPeerConnection.prototype.close = function () {\n if (this.signalingState !== 'closed') {\n this._isClosed = true;\n this._peerConnection.close();\n }\n };\n return FirefoxRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, FirefoxRTCPeerConnection.prototype, '_peerConnection');\nfunction rollback(peerConnection, local, onceRolledBack) {\n var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n peerConnection._rollingBack = true;\n return peerConnection._peerConnection[setLocalDescription](new FirefoxRTCSessionDescription({\n type: 'rollback'\n })).then(onceRolledBack).then(function (result) {\n peerConnection._rollingBack = false;\n return result;\n }, function (error) {\n peerConnection._rollingBack = false;\n throw error;\n });\n}\n/**\n * Extract the initially negotiated DTLS role out of an RTCSessionDescription's\n * sdp property and save it on the FirefoxRTCPeerConnection if and only if\n *\n * 1. A DTLS role was not already saved on the FirefoxRTCPeerConnection, and\n * 2. The description is an answer.\n *\n * @private\n * @param {FirefoxRTCPeerConnection} peerConnection\n * @param {RTCSessionDescription} description\n * @param {boolean} [remote=false] - if true, save the inverse of the DTLS role,\n * e.g. \"active\" instead of \"passive\" and vice versa\n * @returns {undefined}\n */\nfunction saveInitiallyNegotiatedDtlsRole(peerConnection, description, remote) {\n // NOTE(mroberts): JSEP specifies that offers always offer \"actpass\" as the\n // DTLS role. We need to inspect answers to figure out the negotiated DTLS\n // role.\n if (peerConnection._initiallyNegotiatedDtlsRole || description.type === 'offer') {\n return;\n }\n var match = description.sdp.match(/a=setup:([a-z]+)/);\n if (!match) {\n return;\n }\n var dtlsRole = match[1];\n peerConnection._initiallyNegotiatedDtlsRole = remote ? {\n active: 'passive',\n passive: 'active'\n }[dtlsRole] : dtlsRole;\n}\n/**\n * Overwrite the DTLS role in the sdp property of an RTCSessionDescription if\n * and only if\n *\n * 1. The description is an answer, and\n * 2. A DTLS role is provided.\n *\n * @private\n * @param {RTCSessionDescription} [description]\n * @param {string} [dtlsRole] - one of \"active\" or \"passive\"\n * @returns {?RTCSessionDescription} description\n */\nfunction overwriteWithInitiallyNegotiatedDtlsRole(description, dtlsRole) {\n if (description && description.type === 'answer' && dtlsRole) {\n return new FirefoxRTCSessionDescription({\n type: description.type,\n sdp: description.sdp.replace(/a=setup:[a-z]+/g, 'a=setup:' + dtlsRole)\n });\n }\n return description;\n}\nmodule.exports = FirefoxRTCPeerConnection;\n//# sourceMappingURL=firefox.js.map","/* globals RTCPeerConnection, RTCSessionDescription */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar EventTarget = require('../../eventtarget');\nvar Latch = require('../util/latch');\nvar _a = require('../util/sdp'), getSdpFormat = _a.getSdpFormat, updatePlanBTrackIdsToSSRCs = _a.updatePlanBTrackIdsToSSRCs, updateUnifiedPlanTrackIdsToSSRCs = _a.updateUnifiedPlanTrackIdsToSSRCs;\nvar _b = require('../util'), delegateMethods = _b.delegateMethods, interceptEvent = _b.interceptEvent, proxyProperties = _b.proxyProperties;\nvar isUnifiedPlan = getSdpFormat() === 'unified';\nvar updateTrackIdsToSSRCs = isUnifiedPlan\n ? updateUnifiedPlanTrackIdsToSSRCs\n : updatePlanBTrackIdsToSSRCs;\nvar SafariRTCPeerConnection = /** @class */ (function (_super) {\n __extends(SafariRTCPeerConnection, _super);\n function SafariRTCPeerConnection(configuration) {\n var _this = _super.call(this) || this;\n interceptEvent(_this, 'datachannel');\n interceptEvent(_this, 'iceconnectionstatechange');\n interceptEvent(_this, 'signalingstatechange');\n interceptEvent(_this, 'track');\n var peerConnection = new RTCPeerConnection(configuration);\n Object.defineProperties(_this, {\n _appliedTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _audioTransceiver: {\n value: null,\n writable: true\n },\n _isClosed: {\n value: false,\n writable: true\n },\n _peerConnection: {\n value: peerConnection\n },\n _pendingLocalOffer: {\n value: null,\n writable: true\n },\n _pendingRemoteOffer: {\n value: null,\n writable: true\n },\n _rolledBackTracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _signalingStateLatch: {\n value: new Latch()\n },\n _tracksToSSRCs: {\n value: new Map(),\n writable: true\n },\n _videoTransceiver: {\n value: null,\n writable: true\n }\n });\n peerConnection.addEventListener('datachannel', function (event) {\n shimDataChannel(event.channel);\n _this.dispatchEvent(event);\n });\n peerConnection.addEventListener('iceconnectionstatechange', function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (_this._isClosed) {\n return;\n }\n _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n });\n peerConnection.addEventListener('signalingstatechange', function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (_this._isClosed) {\n return;\n }\n if (peerConnection.signalingState === 'stable') {\n _this._appliedTracksToSSRCs = new Map(_this._tracksToSSRCs);\n }\n if (!_this._pendingLocalOffer && !_this._pendingRemoteOffer) {\n _this.dispatchEvent.apply(_this, __spreadArray([], __read(args)));\n }\n });\n // NOTE(syerrapragada): This ensures that SafariRTCPeerConnection's \"remoteDescription\", when accessed\n // in an RTCTrackEvent listener, will point to the underlying RTCPeerConnection's\n // \"remoteDescription\". Before this fix, this was still pointing to \"_pendingRemoteOffer\"\n // even though a new remote RTCSessionDescription had already been applied.\n peerConnection.addEventListener('track', function (event) {\n _this._pendingRemoteOffer = null;\n _this.dispatchEvent(event);\n });\n proxyProperties(RTCPeerConnection.prototype, _this, peerConnection);\n return _this;\n }\n Object.defineProperty(SafariRTCPeerConnection.prototype, \"localDescription\", {\n get: function () {\n return this._pendingLocalOffer || this._peerConnection.localDescription;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SafariRTCPeerConnection.prototype, \"iceConnectionState\", {\n get: function () {\n return this._isClosed ? 'closed' : this._peerConnection.iceConnectionState;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SafariRTCPeerConnection.prototype, \"iceGatheringState\", {\n get: function () {\n return this._isClosed ? 'complete' : this._peerConnection.iceGatheringState;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SafariRTCPeerConnection.prototype, \"remoteDescription\", {\n get: function () {\n return this._pendingRemoteOffer || this._peerConnection.remoteDescription;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SafariRTCPeerConnection.prototype, \"signalingState\", {\n get: function () {\n if (this._isClosed) {\n return 'closed';\n }\n else if (this._pendingLocalOffer) {\n return 'have-local-offer';\n }\n else if (this._pendingRemoteOffer) {\n return 'have-remote-offer';\n }\n return this._peerConnection.signalingState;\n },\n enumerable: false,\n configurable: true\n });\n SafariRTCPeerConnection.prototype.addIceCandidate = function (candidate) {\n var _this = this;\n if (this.signalingState === 'have-remote-offer') {\n return this._signalingStateLatch.when('low').then(function () { return _this._peerConnection.addIceCandidate(candidate); });\n }\n return this._peerConnection.addIceCandidate(candidate);\n };\n SafariRTCPeerConnection.prototype.createOffer = function (options) {\n var _this = this;\n options = Object.assign({}, options);\n // NOTE(mroberts): In general, this is not the way to do this; however, it's\n // good enough for our application.\n if (options.offerToReceiveVideo && !this._audioTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'audio'))) {\n delete options.offerToReceiveAudio;\n try {\n this._audioTransceiver = isUnifiedPlan\n ? this.addTransceiver('audio', { direction: 'recvonly' })\n : this.addTransceiver('audio');\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n if (options.offerToReceiveVideo && !this._videoTransceiver && !(isUnifiedPlan && hasReceiversForTracksOfKind(this, 'video'))) {\n delete options.offerToReceiveVideo;\n try {\n this._videoTransceiver = isUnifiedPlan\n ? this.addTransceiver('video', { direction: 'recvonly' })\n : this.addTransceiver('video');\n }\n catch (e) {\n return Promise.reject(e);\n }\n }\n return this._peerConnection.createOffer(options).then(function (offer) {\n // NOTE(mmalavalli): If createOffer() is called immediately after rolling back,\n // then we no longer need to retain the rolled back tracks to SSRCs Map.\n _this._rolledBackTracksToSSRCs.clear();\n return new RTCSessionDescription({\n type: offer.type,\n sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, offer.sdp)\n });\n });\n };\n SafariRTCPeerConnection.prototype.createAnswer = function (options) {\n var _this = this;\n if (this._pendingRemoteOffer) {\n return this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(function () {\n _this._signalingStateLatch.lower();\n return _this._peerConnection.createAnswer();\n }).then(function (answer) {\n _this._pendingRemoteOffer = null;\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n _this._rolledBackTracksToSSRCs.clear();\n return isUnifiedPlan ? new RTCSessionDescription({\n type: answer.type,\n sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, answer.sdp)\n }) : answer;\n }, function (error) {\n _this._pendingRemoteOffer = null;\n throw error;\n });\n }\n return this._peerConnection.createAnswer(options).then(function (answer) {\n // NOTE(mmalavalli): If createAnswer() is called immediately after rolling back, then we no\n // longer need to retain the rolled back tracks to SSRCs Map.\n _this._rolledBackTracksToSSRCs.clear();\n return isUnifiedPlan ? new RTCSessionDescription({\n type: answer.type,\n sdp: updateTrackIdsToSSRCs(_this._tracksToSSRCs, answer.sdp)\n }) : answer;\n });\n };\n SafariRTCPeerConnection.prototype.createDataChannel = function (label, dataChannelDict) {\n var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);\n shimDataChannel(dataChannel);\n return dataChannel;\n };\n SafariRTCPeerConnection.prototype.removeTrack = function (sender) {\n sender.replaceTrack(null);\n this._peerConnection.removeTrack(sender);\n };\n SafariRTCPeerConnection.prototype.setLocalDescription = function (description) {\n // NOTE(mmalavalli): If setLocalDescription() is called immediately after rolling back,\n // then we need to restore the rolled back tracks to SSRCs Map.\n if (this._rolledBackTracksToSSRCs.size > 0) {\n this._tracksToSSRCs = new Map(this._rolledBackTracksToSSRCs);\n this._rolledBackTracksToSSRCs.clear();\n }\n return setDescription(this, true, description);\n };\n SafariRTCPeerConnection.prototype.setRemoteDescription = function (description) {\n // NOTE(mmalavalli): If setRemoteDescription() is called immediately after rolling back,\n // then we no longer need to retain the rolled back tracks to SSRCs Map.\n this._rolledBackTracksToSSRCs.clear();\n return setDescription(this, false, description);\n };\n SafariRTCPeerConnection.prototype.close = function () {\n var _this = this;\n if (this._isClosed) {\n return;\n }\n this._isClosed = true;\n this._peerConnection.close();\n setTimeout(function () {\n _this.dispatchEvent(new Event('iceconnectionstatechange'));\n _this.dispatchEvent(new Event('signalingstatechange'));\n });\n };\n return SafariRTCPeerConnection;\n}(EventTarget));\ndelegateMethods(RTCPeerConnection.prototype, SafariRTCPeerConnection.prototype, '_peerConnection');\nfunction setDescription(peerConnection, local, description) {\n function setPendingLocalOffer(offer) {\n if (local) {\n peerConnection._pendingLocalOffer = offer;\n }\n else {\n peerConnection._pendingRemoteOffer = offer;\n }\n }\n function clearPendingLocalOffer() {\n if (local) {\n peerConnection._pendingLocalOffer = null;\n }\n else {\n peerConnection._pendingRemoteOffer = null;\n }\n }\n var pendingLocalOffer = local ? peerConnection._pendingLocalOffer : peerConnection._pendingRemoteOffer;\n var pendingRemoteOffer = local ? peerConnection._pendingRemoteOffer : peerConnection._pendingLocalOffer;\n var intermediateState = local ? 'have-local-offer' : 'have-remote-offer';\n var setLocalDescription = local ? 'setLocalDescription' : 'setRemoteDescription';\n if (!local && pendingRemoteOffer && description.type === 'answer') {\n return setRemoteAnswer(peerConnection, description);\n }\n else if (description.type === 'offer') {\n if (peerConnection.signalingState !== intermediateState && peerConnection.signalingState !== 'stable') {\n return Promise.reject(new Error(\"Cannot set \" + (local ? 'local' : 'remote') + \"\\n offer in state \" + peerConnection.signalingState));\n }\n if (!pendingLocalOffer && peerConnection._signalingStateLatch.state === 'low') {\n peerConnection._signalingStateLatch.raise();\n }\n var previousSignalingState = peerConnection.signalingState;\n setPendingLocalOffer(description);\n // Only dispatch a signalingstatechange event if we transitioned.\n if (peerConnection.signalingState !== previousSignalingState) {\n return Promise.resolve().then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n }\n return Promise.resolve();\n }\n else if (description.type === 'rollback') {\n if (peerConnection.signalingState !== intermediateState) {\n return Promise.reject(new Error(\"Cannot rollback \\n \" + (local ? 'local' : 'remote') + \" description in \" + peerConnection.signalingState));\n }\n clearPendingLocalOffer();\n // NOTE(mmalavalli): We store the rolled back tracks to SSRCs Map here in case\n // setLocalDescription() is called immediately aftera rollback (without calling\n // createOffer() or createAnswer()), in which case this roll back is not due to\n // a glare scenario and this Map should be restored.\n peerConnection._rolledBackTracksToSSRCs = new Map(peerConnection._tracksToSSRCs);\n peerConnection._tracksToSSRCs = new Map(peerConnection._appliedTracksToSSRCs);\n return Promise.resolve().then(function () { return peerConnection.dispatchEvent(new Event('signalingstatechange')); });\n }\n return peerConnection._peerConnection[setLocalDescription](description);\n}\nfunction setRemoteAnswer(peerConnection, answer) {\n var pendingLocalOffer = peerConnection._pendingLocalOffer;\n return peerConnection._peerConnection.setLocalDescription(pendingLocalOffer).then(function () {\n peerConnection._pendingLocalOffer = null;\n return peerConnection.setRemoteDescription(answer);\n }).then(function () { return peerConnection._signalingStateLatch.lower(); });\n}\n/**\n * Whether a SafariRTCPeerConnection has any RTCRtpReceivers(s) for the given\n * MediaStreamTrack kind.\n * @param {SafariRTCPeerConnection} peerConnection\n * @param {'audio' | 'video'} kind\n * @returns {boolean}\n */\nfunction hasReceiversForTracksOfKind(peerConnection, kind) {\n return !!peerConnection.getTransceivers().find(function (_a) {\n var _b = _a.receiver, receiver = _b === void 0 ? {} : _b;\n var _c = receiver.track, track = _c === void 0 ? {} : _c;\n return track.kind === kind;\n });\n}\n/**\n * Shim an RTCDataChannel. This function mutates the RTCDataChannel.\n * @param {RTCDataChannel} dataChannel\n * @returns {RTCDataChannel}\n */\nfunction shimDataChannel(dataChannel) {\n return Object.defineProperties(dataChannel, {\n maxPacketLifeTime: {\n value: dataChannel.maxPacketLifeTime === 65535\n ? null\n : dataChannel.maxPacketLifeTime\n },\n maxRetransmits: {\n value: dataChannel.maxRetransmits === 65535\n ? null\n : dataChannel.maxRetransmits\n }\n });\n}\nmodule.exports = SafariRTCPeerConnection;\n//# sourceMappingURL=safari.js.map","/* globals RTCSessionDescription */\n'use strict';\nif (typeof RTCSessionDescription === 'function') {\n var guessBrowser = require('../util').guessBrowser;\n switch (guessBrowser()) {\n case 'chrome':\n module.exports = require('./chrome');\n break;\n case 'firefox':\n module.exports = require('./firefox');\n break;\n default:\n module.exports = RTCSessionDescription;\n break;\n }\n}\nelse {\n module.exports = function RTCSessionDescription() {\n throw new Error('RTCSessionDescription is not supported');\n };\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalAudioTrackClass = require('../localaudiotrack');\nfunction LocalAudioTrack(mediaStreamTrack, options) {\n var track = new LocalAudioTrackClass(mediaStreamTrack, options);\n Object.setPrototypeOf(track, LocalAudioTrack.prototype);\n return track;\n}\ninherits(LocalAudioTrack, LocalAudioTrackClass);\nmodule.exports = LocalAudioTrack;\n//# sourceMappingURL=localaudiotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar detectSilentAudio = require('../../util/detectsilentaudio');\nvar isIOSChrome = require('../../webrtc/util').isIOSChrome;\nvar AudioTrack = require('./audiotrack');\nvar mixinLocalMediaTrack = require('./localmediatrack');\nvar LocalMediaAudioTrack = mixinLocalMediaTrack(AudioTrack);\n/**\n * A {@link LocalAudioTrack} is an {@link AudioTrack} representing audio that\n * your {@link LocalParticipant} can publish to a {@link Room}. It can be\n * enabled and disabled with {@link LocalAudioTrack#enable} and\n * {@link LocalAudioTrack#disable} or stopped completely with\n * {@link LocalAudioTrack#stop}.\n * @extends AudioTrack\n * @property {Track.ID} id - The {@link LocalAudioTrack}'s ID\n * @property {boolean} isMuted - Whether or not the audio source has stopped sending samples to the\n * {@link LocalAudioTrack}; This can happen when the microphone is taken over by another application,\n * mainly on mobile devices; When this property toggles, then muted and unmuted\n * events are fired appropriately\n * @property {boolean} isStopped - Whether or not the {@link LocalAudioTrack} is\n * stopped\n * @property {NoiseCancellation?} noiseCancellation - When a LocalAudioTrack is created\n * with {@link NoiseCancellationOptions}, this property provides interface\n * to enable or disable the noise cancellation at runtime.\n * @emits LocalAudioTrack#disabled\n * @emits LocalAudioTrack#enabled\n * @emits LocalAudioTrack#muted\n * @emits LocalAudioTrack#started\n * @emits LocalAudioTrack#stopped\n * @emits LocalAudioTrack#unmuted\n */\nvar LocalAudioTrack = /** @class */ (function (_super) {\n __extends(LocalAudioTrack, _super);\n /**\n * Construct a {@link LocalAudioTrack} from a MediaStreamTrack.\n * @param {MediaStreamTrack} mediaStreamTrack - An audio MediaStreamTrack\n * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n */\n function LocalAudioTrack(mediaStreamTrack, options) {\n var _this = this;\n var noiseCancellation = (options === null || options === void 0 ? void 0 : options.noiseCancellation) || null;\n _this = _super.call(this, mediaStreamTrack, options) || this;\n var log = _this._log;\n var _a = mediaStreamTrack.label, defaultDeviceLabel = _a === void 0 ? '' : _a;\n var _b = mediaStreamTrack.getSettings(), _c = _b.deviceId, defaultDeviceId = _c === void 0 ? '' : _c, _d = _b.groupId, defaultGroupId = _d === void 0 ? '' : _d;\n Object.defineProperties(_this, {\n _currentDefaultDeviceInfo: {\n value: { deviceId: defaultDeviceId, groupId: defaultGroupId, label: defaultDeviceLabel },\n writable: true\n },\n _defaultDeviceCaptureMode: {\n value: !isIOS()\n && _this._isCreatedByCreateLocalTracks\n && typeof navigator === 'object'\n && typeof navigator.mediaDevices === 'object'\n && typeof navigator.mediaDevices.addEventListener === 'function'\n && typeof navigator.mediaDevices.enumerateDevices === 'function'\n ? (options === null || options === void 0 ? void 0 : options.defaultDeviceCaptureMode) || 'auto'\n : 'manual'\n },\n _onDeviceChange: {\n value: function () {\n navigator.mediaDevices.enumerateDevices().then(function (deviceInfos) {\n // NOTE(mmalavalli): In Chrome, when the default device changes, and we restart the LocalAudioTrack with\n // device ID \"default\", it will not switch to the new default device unless all LocalAudioTracks capturing\n // from the old default device are stopped. So, we restart the LocalAudioTrack with the actual device ID of\n // the new default device instead.\n var defaultDeviceInfo = deviceInfos.find(function (_a) {\n var deviceId = _a.deviceId, kind = _a.kind;\n return kind === 'audioinput' && deviceId !== 'default';\n });\n if (defaultDeviceInfo && ['deviceId', 'groupId'].some(function (prop) {\n return defaultDeviceInfo[prop] !== _this._currentDefaultDeviceInfo[prop];\n })) {\n log.info('Default device changed, restarting the LocalAudioTrack');\n log.debug(\"Old default device: \\\"\" + _this._currentDefaultDeviceInfo.deviceId + \"\\\" => \\\"\" + _this._currentDefaultDeviceInfo.label + \"\\\"\");\n log.debug(\"New default device: \\\"\" + defaultDeviceInfo.deviceId + \"\\\" => \\\"\" + defaultDeviceInfo.label + \"\\\"\");\n _this._currentDefaultDeviceInfo = defaultDeviceInfo;\n _this._restartDefaultDevice().catch(function (error) { return log.warn(\"Failed to restart: \" + error.message); });\n }\n }, function (error) {\n log.warn(\"Failed to run enumerateDevices(): \" + error.message);\n });\n }\n },\n _restartOnDefaultDeviceChangeCleanup: {\n value: null,\n writable: true\n },\n noiseCancellation: {\n enumerable: true,\n value: noiseCancellation,\n writable: false\n },\n });\n log.debug('defaultDeviceCaptureMode:', _this._defaultDeviceCaptureMode);\n _this._maybeRestartOnDefaultDeviceChange();\n return _this;\n }\n LocalAudioTrack.prototype.toString = function () {\n return \"[LocalAudioTrack #\" + this._instanceId + \": \" + this.id + \"]\";\n };\n LocalAudioTrack.prototype.attach = function (el) {\n el = _super.prototype.attach.call(this, el);\n el.muted = true;\n return el;\n };\n /**\n * @private\n */\n LocalAudioTrack.prototype._end = function () {\n return _super.prototype._end.apply(this, arguments);\n };\n /**\n * @private\n */\n LocalAudioTrack.prototype._maybeRestartOnDefaultDeviceChange = function () {\n var _this = this;\n var _a = this, constraints = _a._constraints, defaultDeviceCaptureMode = _a._defaultDeviceCaptureMode, log = _a._log;\n var mediaStreamTrack = this.noiseCancellation ? this.noiseCancellation.sourceTrack : this.mediaStreamTrack;\n var deviceId = mediaStreamTrack.getSettings().deviceId;\n var isNotEqualToCapturedDeviceIdOrEqualToDefault = function (requestedDeviceId) {\n return requestedDeviceId !== deviceId || requestedDeviceId === 'default';\n };\n var isCapturingFromDefaultDevice = (function checkIfCapturingFromDefaultDevice(deviceIdConstraint) {\n if (deviceIdConstraint === void 0) { deviceIdConstraint = {}; }\n if (typeof deviceIdConstraint === 'string') {\n return isNotEqualToCapturedDeviceIdOrEqualToDefault(deviceIdConstraint);\n }\n else if (Array.isArray(deviceIdConstraint)) {\n return deviceIdConstraint.every(isNotEqualToCapturedDeviceIdOrEqualToDefault);\n }\n else if (deviceIdConstraint.exact) {\n return checkIfCapturingFromDefaultDevice(deviceIdConstraint.exact);\n }\n else if (deviceIdConstraint.ideal) {\n return checkIfCapturingFromDefaultDevice(deviceIdConstraint.ideal);\n }\n return true;\n }(constraints.deviceId));\n if (defaultDeviceCaptureMode === 'auto' && isCapturingFromDefaultDevice) {\n if (!this._restartOnDefaultDeviceChangeCleanup) {\n log.info('LocalAudioTrack will be restarted if the default device changes');\n navigator.mediaDevices.addEventListener('devicechange', this._onDeviceChange);\n this._restartOnDefaultDeviceChangeCleanup = function () {\n log.info('Cleaning up the listener to restart the LocalAudioTrack if the default device changes');\n navigator.mediaDevices.removeEventListener('devicechange', _this._onDeviceChange);\n _this._restartOnDefaultDeviceChangeCleanup = null;\n };\n }\n }\n else {\n log.info('LocalAudioTrack will NOT be restarted if the default device changes');\n if (this._restartOnDefaultDeviceChangeCleanup) {\n this._restartOnDefaultDeviceChangeCleanup();\n }\n }\n };\n /**\n * @private\n */\n LocalAudioTrack.prototype._reacquireTrack = function (constraints) {\n var _this = this;\n this._log.debug('_reacquireTrack: ', constraints);\n if (this.noiseCancellation) {\n return this.noiseCancellation.reacquireTrack(function () {\n return _super.prototype._reacquireTrack.call(_this, constraints);\n });\n }\n return _super.prototype._reacquireTrack.call(this, constraints);\n };\n /**\n * @private\n */\n LocalAudioTrack.prototype._restartDefaultDevice = function () {\n var _this = this;\n var constraints = Object.assign({}, this._constraints);\n var restartConstraints = Object.assign({}, constraints, { deviceId: this._currentDefaultDeviceInfo.deviceId });\n return this.restart(restartConstraints).then(function () {\n // NOTE(mmalavalli): Since we used the new default device's ID while restarting the LocalAudioTrack,\n // we reset the constraints to the original constraints so that the default device detection logic in\n // _maybeRestartOnDefaultDeviceChange() still works.\n _this._constraints = constraints;\n _this._maybeRestartOnDefaultDeviceChange();\n });\n };\n /**\n * NOTE(mmalavalli): On iOS 17 Chrome, a LocalAudioTrack with Krisp Noise Cancellation\n * enabled that is restarted due to foregrounding the browser is silent for as-of-yet\n * unknown reason. We work around this by discarding the Krisp MediaStreamTrack and using\n * the source MediaStreamTrack. (VIDEO-13006)\n * @private\n */\n LocalAudioTrack.prototype._setMediaStreamTrack = function (mediaStreamTrack) {\n var _this = this;\n var _a = this, log = _a._log, noiseCancellation = _a.noiseCancellation;\n var promise = _super.prototype._setMediaStreamTrack.call(this, mediaStreamTrack);\n if (isIOSChrome() && !!noiseCancellation) {\n log.debug('iOS Chrome detected, checking if the restarted Krisp audio is silent');\n promise = promise.then(function () { return detectSilentAudio(_this._dummyEl); }).then(function (isSilent) {\n log.debug(\"Krisp audio is \" + (isSilent ? 'silent, using source audio' : 'not silent'));\n return isSilent && noiseCancellation.disablePermanently().then(function () {\n return _super.prototype._setMediaStreamTrack.call(_this, noiseCancellation.sourceTrack);\n });\n });\n }\n return promise;\n };\n /**\n * Disable the {@link LocalAudioTrack}. This is equivalent to muting the audio source.\n * @returns {this}\n * @fires LocalAudioTrack#disabled\n */\n LocalAudioTrack.prototype.disable = function () {\n return _super.prototype.disable.apply(this, arguments);\n };\n /**\n * Enable the {@link LocalAudioTrack}. This is equivalent to unmuting the audio source.\n * @returns {this}\n * @fires LocalAudioTrack#enabled\n */ /**\n * Enable or disable the {@link LocalAudioTrack}. This is equivalent to unmuting or muting\n * the audio source respectively.\n * @param {boolean} [enabled] - Specify false to disable the\n * {@link LocalAudioTrack}\n * @returns {this}\n * @fires LocalAudioTrack#disabled\n * @fires LocalAudioTrack#enabled\n */\n LocalAudioTrack.prototype.enable = function () {\n return _super.prototype.enable.apply(this, arguments);\n };\n /**\n * Restart the {@link LocalAudioTrack}. This stops the existing MediaStreamTrack\n * and creates a new MediaStreamTrack. If the {@link LocalAudioTrack} is being published\n * to a {@link Room}, then all the {@link RemoteParticipant}s will start receiving media\n * from the newly created MediaStreamTrack. You can access the new MediaStreamTrack via\n * the mediaStreamTrack property. If you want to listen to events on\n * the MediaStreamTrack directly, please do so in the \"started\" event handler. Also,\n * the {@link LocalAudioTrack}'s ID is no longer guaranteed to be the same as the\n * underlying MediaStreamTrack's ID.\n * @param {MediaTrackConstraints} [constraints] - The optional MediaTrackConstraints\n * for restarting the {@link LocalAudioTrack}; If not specified, then the current MediaTrackConstraints\n * will be used; If {} (empty object) is specified, then the default MediaTrackConstraints\n * will be used\n * @returns {Promise} Rejects with a TypeError if the {@link LocalAudioTrack} was not created\n * using an one of createLocalAudioTrack, createLocalTracks or connect;\n * Also rejects with the DOMException\n * raised by getUserMedia when it fails\n * @fires LocalAudioTrack#stopped\n * @fires LocalAudioTrack#started\n * @example\n * const { connect, createLocalAudioTrack } = require('twilio-video');\n *\n * // Create a LocalAudioTrack that captures audio from a USB microphone.\n * createLocalAudioTrack({ deviceId: 'usb-mic-id' }).then(function(localAudioTrack) {\n * return connect('token', {\n * name: 'my-cool-room',\n * tracks: [localAudioTrack]\n * });\n * }).then(function(room) {\n * // Restart the LocalAudioTrack to capture audio from the default microphone.\n * const localAudioTrack = Array.from(room.localParticipant.audioTracks.values())[0].track;\n * return localAudioTrack.restart({ deviceId: 'default-mic-id' });\n * });\n */\n LocalAudioTrack.prototype.restart = function () {\n return _super.prototype.restart.apply(this, arguments);\n };\n /**\n * Calls stop on the underlying MediaStreamTrack. If you choose to stop a\n * {@link LocalAudioTrack}, you should unpublish it after stopping.\n * @returns {this}\n * @fires LocalAudioTrack#stopped\n */\n LocalAudioTrack.prototype.stop = function () {\n if (this.noiseCancellation) {\n this.noiseCancellation.stop();\n }\n if (this._restartOnDefaultDeviceChangeCleanup) {\n this._restartOnDefaultDeviceChangeCleanup();\n }\n return _super.prototype.stop.apply(this, arguments);\n };\n return LocalAudioTrack;\n}(LocalMediaAudioTrack));\n/**\n * The {@link LocalAudioTrack} was disabled, i.e. the audio source was muted by the user.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was\n * disabled\n * @event LocalAudioTrack#disabled\n */\n/**\n * The {@link LocalAudioTrack} was enabled, i.e. the audio source was unmuted by the user.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was enabled\n * @event LocalAudioTrack#enabled\n */\n/**\n * The {@link LocalAudioTrack} was muted because the audio source stopped sending samples, most\n * likely due to another application taking said audio source, especially on mobile devices.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was muted\n * @event LocalAudioTrack#muted\n */\n/**\n * The {@link LocalAudioTrack} started. This means there is enough audio data to\n * begin playback.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that started\n * @event LocalAudioTrack#started\n */\n/**\n * The {@link LocalAudioTrack} stopped, either because {@link LocalAudioTrack#stop}\n * or {@link LocalAudioTrack#restart} was called or because the underlying\n * MediaStreamTrack ended.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that stopped\n * @event LocalAudioTrack#stopped\n */\n/**\n * The {@link LocalAudioTrack} was unmuted because the audio source resumed sending samples,\n * most likely due to the application that took over the said audio source has released it\n * back to the application, especially on mobile devices. This event is also fired when\n * {@link LocalAudioTrack#restart} is called on a muted {@link LocalAudioTrack} with a\n * new audio source.\n * @param {LocalAudioTrack} track - The {@link LocalAudioTrack} that was unmuted\n * @event LocalAudioTrack#unmuted\n */\nmodule.exports = LocalAudioTrack;\n//# sourceMappingURL=localaudiotrack.js.map","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalVideoTrackClass = require('../localvideotrack');\nfunction LocalVideoTrack(mediaStreamTrack, options) {\n var track = new LocalVideoTrackClass(mediaStreamTrack, options);\n Object.setPrototypeOf(track, LocalVideoTrack.prototype);\n return track;\n}\ninherits(LocalVideoTrack, LocalVideoTrackClass);\nmodule.exports = LocalVideoTrack;\n//# sourceMappingURL=localvideotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar isIOS = require('../../util/browserdetection').isIOS;\nvar detectSilentVideo = require('../../util/detectsilentvideo');\nvar mixinLocalMediaTrack = require('./localmediatrack');\nvar VideoTrack = require('./videotrack');\nvar LocalMediaVideoTrack = mixinLocalMediaTrack(VideoTrack);\n/**\n * A {@link LocalVideoTrack} is a {@link VideoTrack} representing video that\n * your {@link LocalParticipant} can publish to a {@link Room}. It can be\n * enabled and disabled with {@link LocalVideoTrack#enable} and\n * {@link LocalVideoTrack#disable} or stopped completely with\n * {@link LocalVideoTrack#stop}.\n * @extends VideoTrack\n * @property {Track.ID} id - The {@link LocalVideoTrack}'s ID\n * @property {boolean} isMuted - Whether or not the video source has stopped sending frames to the\n * {@link LocalVideoTrack}; This can happen when the camera is taken over by another application,\n * mainly on mobile devices; When this property toggles, then muted and unmuted\n * events are fired appropriately\n * @property {boolean} isStopped - Whether or not the {@link LocalVideoTrack} is\n * stopped\n * @emits LocalVideoTrack#disabled\n * @emits LocalVideoTrack#enabled\n * @emits LocalVideoTrack#muted\n * @emits LocalVideoTrack#started\n * @emits LocalVideoTrack#stopped\n * @emits LocalVideoTrack#unmuted\n */\nvar LocalVideoTrack = /** @class */ (function (_super) {\n __extends(LocalVideoTrack, _super);\n /**\n * Construct a {@link LocalVideoTrack} from a MediaStreamTrack.\n * @param {MediaStreamTrack} mediaStreamTrack - The underlying MediaStreamTrack\n * @param {LocalTrackOptions} [options] - {@link LocalTrack} options\n */\n function LocalVideoTrack(mediaStreamTrack, options) {\n var _this = this;\n options = Object.assign({\n workaroundSilentLocalVideo: isIOS()\n && typeof document !== 'undefined'\n && typeof document.createElement === 'function'\n }, options);\n _this = _super.call(this, mediaStreamTrack, options) || this;\n Object.defineProperties(_this, {\n _workaroundSilentLocalVideo: {\n value: options.workaroundSilentLocalVideo\n ? workaroundSilentLocalVideo\n : null\n },\n _workaroundSilentLocalVideoCleanup: {\n value: null,\n writable: true\n }\n });\n // NOTE(mmalavalli): In iOS Safari, we work around a bug where local video\n // MediaStreamTracks are silent (even though they are enabled, live and unmuted)\n // after accepting/rejecting a phone call.\n if (_this._workaroundSilentLocalVideo) {\n _this._workaroundSilentLocalVideoCleanup = _this._workaroundSilentLocalVideo(_this, document);\n }\n return _this;\n }\n LocalVideoTrack.prototype.toString = function () {\n return \"[LocalVideoTrack #\" + this._instanceId + \": \" + this.id + \"]\";\n };\n /**\n * @private\n */\n LocalVideoTrack.prototype._checkIfCanCaptureFrames = function () {\n return _super.prototype._checkIfCanCaptureFrames.call(this, this._trackSender.isPublishing);\n };\n /**\n * @private\n */\n LocalVideoTrack.prototype._end = function () {\n return _super.prototype._end.apply(this, arguments);\n };\n /**\n * @private\n */\n LocalVideoTrack.prototype._setSenderMediaStreamTrack = function (useProcessed) {\n var _this = this;\n var unprocessedTrack = this.mediaStreamTrack;\n var mediaStreamTrack = useProcessed ? this.processedTrack : unprocessedTrack;\n return this._trackSender.setMediaStreamTrack(mediaStreamTrack)\n .catch(function (error) { return _this._log.warn('setMediaStreamTrack failed on LocalVideoTrack RTCRtpSender', { error: error, mediaStreamTrack: mediaStreamTrack }); })\n .then(function () {\n _this._unprocessedTrack = useProcessed ? unprocessedTrack : null;\n });\n };\n /**\n * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n * @returns {this}\n * @example\n * class GrayScaleProcessor {\n * constructor(percentage) {\n * this.percentage = percentage;\n * }\n * processFrame(inputFrameBuffer, outputFrameBuffer) {\n * const context = outputFrameBuffer.getContext('2d');\n * context.filter = `grayscale(${this.percentage}%)`;\n * context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n * }\n * }\n *\n * const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n * localVideoTrack.addProcessor(new GrayScaleProcessor(100));\n */\n LocalVideoTrack.prototype.addProcessor = function () {\n this._log.debug('Adding VideoProcessor to the LocalVideoTrack');\n var result = _super.prototype.addProcessor.apply(this, arguments);\n if (!this.processedTrack) {\n return this._log.warn('Unable to add a VideoProcessor to the LocalVideoTrack');\n }\n this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the processed MediaStreamTrack', this.processedTrack);\n this._setSenderMediaStreamTrack(true);\n return result;\n };\n /**\n * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n * @returns {this}\n * @example\n * class GrayScaleProcessor {\n * constructor(percentage) {\n * this.percentage = percentage;\n * }\n * processFrame(inputFrameBuffer, outputFrameBuffer) {\n * const context = outputFrameBuffer.getContext('2d');\n * context.filter = `grayscale(${this.percentage}%)`;\n * context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n * }\n * }\n *\n * const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n * const grayScaleProcessor = new GrayScaleProcessor(100);\n * localVideoTrack.addProcessor(grayScaleProcessor);\n *\n * document.getElementById('remove-button').onclick = () => localVideoTrack.removeProcessor(grayScaleProcessor);\n */\n LocalVideoTrack.prototype.removeProcessor = function () {\n var _this = this;\n this._log.debug('Removing VideoProcessor from the LocalVideoTrack');\n var result = _super.prototype.removeProcessor.apply(this, arguments);\n this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the original MediaStreamTrack');\n this._setSenderMediaStreamTrack()\n .then(function () { return _this._updateElementsMediaStreamTrack(); });\n return result;\n };\n /**\n * Disable the {@link LocalVideoTrack}. This is equivalent to pausing a video source.\n * If a {@link VideoProcessor} is added, then processedTrack is also disabled.\n * @returns {this}\n * @fires VideoTrack#disabled\n */\n LocalVideoTrack.prototype.disable = function () {\n var result = _super.prototype.disable.apply(this, arguments);\n if (this.processedTrack) {\n this.processedTrack.enabled = false;\n }\n return result;\n };\n /**\n * Enable the {@link LocalVideoTrack}. This is equivalent to unpausing the video source.\n * If a {@link VideoProcessor} is added, then processedTrack is also enabled.\n * @returns {this}\n * @fires VideoTrack#enabled\n */ /**\n * Enable or disable the {@link LocalVideoTrack}. This is equivalent to unpausing or pausing\n * the video source respectively. If a {@link VideoProcessor} is added, then processedTrack\n * is also enabled or disabled.\n * @param {boolean} [enabled] - Specify false to disable the\n * {@link LocalVideoTrack}\n * @returns {this}\n * @fires VideoTrack#disabled\n * @fires VideoTrack#enabled\n */\n LocalVideoTrack.prototype.enable = function (enabled) {\n if (enabled === void 0) { enabled = true; }\n var result = _super.prototype.enable.apply(this, arguments);\n if (this.processedTrack) {\n this.processedTrack.enabled = enabled;\n if (enabled) {\n this._captureFrames();\n this._log.debug('Updating LocalVideoTrack\\'s MediaStreamTrack with the processed MediaStreamTrack', this.processedTrack);\n this._setSenderMediaStreamTrack(true);\n }\n }\n return result;\n };\n /**\n * Restart the {@link LocalVideoTrack}. This stops the existing MediaStreamTrack\n * and creates a new MediaStreamTrack. If the {@link LocalVideoTrack} is being published\n * to a {@link Room}, then all the {@link RemoteParticipant}s will start receiving media\n * from the newly created MediaStreamTrack. You can access the new MediaStreamTrack via\n * the mediaStreamTrack property. If you want to listen to events on\n * the MediaStreamTrack directly, please do so in the \"started\" event handler. Also,\n * the {@link LocalVideoTrack}'s ID is no longer guaranteed to be the same as the\n * underlying MediaStreamTrack's ID.\n * @param {MediaTrackConstraints} [constraints] - The optional MediaTrackConstraints\n * for restarting the {@link LocalVideoTrack}; If not specified, then the current MediaTrackConstraints\n * will be used; If {} (empty object) is specified, then the default MediaTrackConstraints\n * will be used\n * @returns {Promise} Rejects with a TypeError if the {@link LocalVideoTrack} was not created\n * using an one of createLocalVideoTrack, createLocalTracks or connect;\n * Also rejects with the DOMException\n * raised by getUserMedia when it fails\n * @fires LocalVideoTrack#stopped\n * @fires LocalVideoTrack#started\n * @example\n * const { connect, createLocalVideoTrack } = require('twilio-video');\n *\n * // Create a LocalVideoTrack that captures video from the front-facing camera.\n * createLocalVideoTrack({ facingMode: 'user' }).then(function(localVideoTrack) {\n * return connect('token', {\n * name: 'my-cool-room',\n * tracks: [localVideoTrack]\n * });\n * }).then(function(room) {\n * // Restart the LocalVideoTrack to capture video from the back-facing camera.\n * const localVideoTrack = Array.from(room.localParticipant.videoTracks.values())[0].track;\n * return localVideoTrack.restart({ facingMode: 'environment' });\n * });\n */\n LocalVideoTrack.prototype.restart = function () {\n var _this = this;\n if (this._workaroundSilentLocalVideoCleanup) {\n this._workaroundSilentLocalVideoCleanup();\n this._workaroundSilentLocalVideoCleanup = null;\n }\n var promise = _super.prototype.restart.apply(this, arguments);\n if (this.processor) {\n promise.then(function () {\n _this._restartProcessor();\n });\n }\n if (this._workaroundSilentLocalVideo) {\n promise.finally(function () {\n _this._workaroundSilentLocalVideoCleanup = _this._workaroundSilentLocalVideo(_this, document);\n });\n }\n return promise;\n };\n /**\n * Calls stop on the underlying MediaStreamTrack. If you choose to stop a\n * {@link LocalVideoTrack}, you should unpublish it after stopping.\n * @returns {this}\n * @fires LocalVideoTrack#stopped\n */\n LocalVideoTrack.prototype.stop = function () {\n if (this._workaroundSilentLocalVideoCleanup) {\n this._workaroundSilentLocalVideoCleanup();\n this._workaroundSilentLocalVideoCleanup = null;\n }\n return _super.prototype.stop.apply(this, arguments);\n };\n return LocalVideoTrack;\n}(LocalMediaVideoTrack));\n/**\n * Work around a bug where local video MediaStreamTracks are silent (even though\n * they are enabled, live and unmuted) after accepting/rejecting a phone call.\n * @private\n * @param {LocalVideoTrack} localVideoTrack\n * @param {HTMLDocument} doc\n * @returns {function} Cleans up listeners attached by the workaround\n */\nfunction workaroundSilentLocalVideo(localVideoTrack, doc) {\n var log = localVideoTrack._log;\n var el = localVideoTrack._dummyEl, mediaStreamTrack = localVideoTrack.mediaStreamTrack;\n function onUnmute() {\n if (!localVideoTrack.isEnabled) {\n return;\n }\n log.info('Unmuted, checking silence');\n // The dummy element is paused, so play it and then detect silence.\n el.play().then(function () { return detectSilentVideo(el, doc); }).then(function (isSilent) {\n if (!isSilent) {\n log.info('Non-silent frames detected, so no need to restart');\n return;\n }\n log.warn('Silence detected, restarting');\n // NOTE(mmalavalli): If we try and restart a silent MediaStreamTrack\n // without stopping it first, then a NotReadableError is raised. Hence,\n // we stop the MediaStreamTrack here.\n localVideoTrack._stop();\n // Restart the LocalVideoTrack.\n // eslint-disable-next-line consistent-return\n return localVideoTrack._restart();\n }).catch(function (error) {\n log.warn('Failed to detect silence and restart:', error);\n }).finally(function () {\n // If silent frames were not detected, then pause the dummy element again,\n // if there is no processed track.\n el = localVideoTrack._dummyEl;\n if (el && !el.paused && !localVideoTrack.processedTrack) {\n el.pause();\n }\n // Reset the unmute handler.\n mediaStreamTrack.removeEventListener('unmute', onUnmute);\n mediaStreamTrack = localVideoTrack.mediaStreamTrack;\n mediaStreamTrack.addEventListener('unmute', onUnmute);\n });\n }\n // Set the unmute handler.\n mediaStreamTrack.addEventListener('unmute', onUnmute);\n return function () {\n mediaStreamTrack.removeEventListener('unmute', onUnmute);\n };\n}\n/**\n * The {@link LocalVideoTrack} was disabled, i.e. the video source was paused by the user.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was\n * disabled\n * @event LocalVideoTrack#disabled\n */\n/**\n * The {@link LocalVideoTrack} was enabled, i.e. the video source was unpaused by the user.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was enabled\n * @event LocalVideoTrack#enabled\n */\n/**\n * The {@link LocalVideoTrack} was muted because the video source stopped sending frames, most\n * likely due to another application taking said video source, especially on mobile devices.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was muted\n * @event LocalVideoTrack#muted\n */\n/**\n * The {@link LocalVideoTrack} started. This means there is enough video data\n * to begin playback.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that started\n * @event LocalVideoTrack#started\n */\n/**\n * The {@link LocalVideoTrack} stopped, either because {@link LocalVideoTrack#stop}\n * or {@link LocalVideoTrack#restart} was called or because the underlying\n * MediaStreamTrack ended.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that stopped\n * @event LocalVideoTrack#stopped\n */\n/**\n * The {@link LocalVideoTrack} was unmuted because the video source resumed sending frames,\n * most likely due to the application that took over the said video source has released it\n * back to the application, especially on mobile devices. This event is also fired when\n * {@link LocalVideoTrack#restart} is called on a muted {@link LocalVideoTrack} with a\n * new video source.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} that was unmuted\n * @event LocalVideoTrack#unmuted\n */\nmodule.exports = LocalVideoTrack;\n//# sourceMappingURL=localvideotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('events').EventEmitter;\nvar DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS = require('../../util/constants').DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS;\n/**\n * VideoProcessorEventObserver listens to {@link VideoProcessor} related events\n * and re-emits them as a generic event with some additional information.\n * @extends EventEmitter\n * @emits VideoProcessorEventObserver#event\n */\nvar VideoProcessorEventObserver = /** @class */ (function (_super) {\n __extends(VideoProcessorEventObserver, _super);\n /**\n * Constructor.\n * @param {Log} log\n */\n function VideoProcessorEventObserver(log) {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _lastStatsSaveTime: {\n value: null,\n writable: true\n },\n _lastStatsPublishTime: {\n value: null,\n writable: true\n },\n _log: {\n value: log\n },\n _processorInfo: {\n value: null,\n writable: true\n },\n _stats: {\n value: null,\n writable: true\n }\n });\n _this.on('add', function (info) {\n _this._lastStatsSaveTime = Date.now();\n _this._lastStatsPublishTime = Date.now();\n _this._processorInfo = info;\n _this._stats = [];\n _this._reemitEvent('add', _this._getEventData());\n });\n _this.on('remove', function () {\n var data = _this._getEventData();\n _this._lastStatsSaveTime = null;\n _this._lastStatsPublishTime = null;\n _this._processorInfo = null;\n _this._stats = null;\n _this._reemitEvent('remove', data);\n });\n _this.on('start', function () {\n _this._reemitEvent('start', _this._getEventData());\n });\n _this.on('stop', function (message) {\n _this._reemitEvent('stop', Object.assign({ message: message }, _this._getEventData()));\n });\n _this.on('stats', function () { return _this._maybeEmitStats(); });\n return _this;\n }\n /**\n * @private\n */\n VideoProcessorEventObserver.prototype._getEventData = function () {\n if (!this._processorInfo) {\n return {};\n }\n var _a = this._processorInfo, processor = _a.processor, captureHeight = _a.captureHeight, captureWidth = _a.captureWidth, inputFrameRate = _a.inputFrameRate, isRemoteVideoTrack = _a.isRemoteVideoTrack, inputFrameBufferType = _a.inputFrameBufferType, outputFrameBufferContextType = _a.outputFrameBufferContextType;\n var data = { captureHeight: captureHeight, captureWidth: captureWidth, inputFrameRate: inputFrameRate, isRemoteVideoTrack: isRemoteVideoTrack, inputFrameBufferType: inputFrameBufferType, outputFrameBufferContextType: outputFrameBufferContextType };\n data.name = processor._name || 'VideoProcessor';\n ['assetsPath', 'blurFilterRadius', 'debounce', 'fitType', 'isSimdEnabled', 'maskBlurRadius', 'pipeline', 'version'].forEach(function (prop) {\n var val = processor[\"_\" + prop];\n if (typeof val !== 'undefined') {\n data[prop] = val;\n }\n });\n Object.keys(data).forEach(function (prop) {\n var val = data[prop];\n if (typeof val === 'boolean') {\n data[prop] = val ? 'true' : 'false';\n }\n });\n return data;\n };\n /**\n * Save stats every second. If a specific time interval has elapsed,\n * the stats event will be emitted\n * @private\n */\n VideoProcessorEventObserver.prototype._maybeEmitStats = function () {\n if (!this._stats || !this._processorInfo) {\n return;\n }\n var benchmark = this._processorInfo.processor._benchmark;\n if (!benchmark) {\n return;\n }\n var now = Date.now();\n if (now - this._lastStatsSaveTime < 1000) {\n return;\n }\n var entry = { outputFrameRate: benchmark.getRate('totalProcessingDelay') };\n ['captureFrameDelay', 'imageCompositionDelay', 'inputImageResizeDelay', 'processFrameDelay', 'segmentationDelay'].forEach(function (name) {\n entry[name] = benchmark.getAverageDelay(name);\n });\n this._lastStatsSaveTime = now;\n this._stats.push(entry);\n if (now - this._lastStatsPublishTime < DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS) {\n return;\n }\n this._lastStatsPublishTime = now;\n var stats = this._stats.splice(0);\n var averages = stats.reduce(function (averages, current, n) {\n Object.keys(entry).forEach(function (name) {\n if (!averages[name]) {\n averages[name] = 0;\n }\n averages[name] = ((averages[name] * n) + current[name]) / (n + 1);\n });\n return averages;\n }, {});\n Object.keys(averages).forEach(function (name) {\n averages[name] = parseFloat(averages[name].toFixed(2));\n });\n this._reemitEvent('stats', Object.assign({}, averages, this._getEventData()));\n };\n /**\n * @private\n */\n VideoProcessorEventObserver.prototype._reemitEvent = function (name, data) {\n this._log.debug(\"VideoProcessor:\" + name, data);\n this.emit('event', { name: name, data: data });\n };\n return VideoProcessorEventObserver;\n}(EventEmitter));\nmodule.exports = VideoProcessorEventObserver;\n//# sourceMappingURL=videoprocessoreventobserver.js.map","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): Remove this when we go to the next major version. This is\n// only in place so that we can support ES6 classes without requiring `new`.\n'use strict';\nvar inherits = require('../../../vendor/inherits');\nvar LocalDataTrackClass = require('../localdatatrack');\nfunction LocalDataTrack(options) {\n var track = new LocalDataTrackClass(options);\n Object.setPrototypeOf(track, LocalDataTrack.prototype);\n return track;\n}\ninherits(LocalDataTrack, LocalDataTrackClass);\nmodule.exports = LocalDataTrack;\n//# sourceMappingURL=localdatatrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Track = require('./');\nvar DefaultDataTrackSender = require('../../data/sender');\n/**\n * A {@link LocalDataTrack} is a {@link Track} representing data that your\n * {@link LocalParticipant} can publish to a {@link Room}.\n * @extends Track\n * @property {Track.ID} id - The {@link LocalDataTrack}'s ID\n * @property {Track.Kind} kind - \"data\"\n * @property {?number} maxPacketLifeTime - If non-null, this represents a time\n * limit (in milliseconds) during which the {@link LocalDataTrack} will send\n * or re-send data if not acknowledged on the underlying RTCDataChannel(s).\n * @property {?number} maxRetransmits - If non-null, this represents the number\n * of times the {@link LocalDataTrack} will resend data if not successfully\n * delivered on the underlying RTCDataChannel(s).\n * @property {boolean} ordered - true if data on the {@link LocalDataTrack} is\n * guaranteed to be sent in order.\n * @property {boolean} reliable - This is true if both\n * maxPacketLifeTime and maxRetransmits are set to\n * null. In other words, if this is true, there is no bound on packet lifetime\n * or the number of times the {@link LocalDataTrack} will attempt to send\n * data, ensuring \"reliable\" transmission.\n * @example\n * var Video = require('twilio-video');\n *\n * var localDataTrack = new Video.LocalDataTrack();\n * window.addEventListener('mousemove', function(event) {\n * localDataTrack.send(JSON.stringify({\n * x: e.clientX,\n * y: e.clientY\n * }));\n * });\n *\n * var token1 = getAccessToken();\n * Video.connect(token1, {\n * name: 'my-cool-room',\n * tracks: [localDataTrack]\n * });\n *\n * var token2 = getAccessToken();\n * Video.connect(token2, {\n * name: 'my-cool-room',\n * tracks: []\n * }).then(function(room) {\n * room.on('trackSubscribed', function(track) {\n * track.on('message', function(message) {\n * console.log(JSON.parse(message)); // { x: , y: }\n * });\n * });\n * });\n */\nvar LocalDataTrack = /** @class */ (function (_super) {\n __extends(LocalDataTrack, _super);\n /**\n * Construct a {@link LocalDataTrack}.\n * @param {LocalDataTrackOptions} [options] - {@link LocalDataTrack} options\n */\n function LocalDataTrack(options) {\n var _this = this;\n options = Object.assign({\n DataTrackSender: DefaultDataTrackSender,\n maxPacketLifeTime: null,\n maxRetransmits: null,\n ordered: true\n }, options);\n var DataTrackSender = options.DataTrackSender;\n var dataTrackSender = new DataTrackSender(options.maxPacketLifeTime, options.maxRetransmits, options.ordered);\n _this = _super.call(this, dataTrackSender.id, 'data', options) || this;\n Object.defineProperties(_this, {\n _trackSender: {\n value: dataTrackSender\n },\n id: {\n enumerable: true,\n value: dataTrackSender.id\n },\n maxPacketLifeTime: {\n enumerable: true,\n value: options.maxPacketLifeTime\n },\n maxRetransmits: {\n enumerable: true,\n value: options.maxRetransmits\n },\n ordered: {\n enumerable: true,\n value: options.ordered\n },\n reliable: {\n enumerable: true,\n value: options.maxPacketLifeTime === null\n && options.maxRetransmits === null\n }\n });\n return _this;\n }\n /**\n * Send a message over the {@link LocalDataTrack}.\n * @param {string|Blob|ArrayBuffer|ArrayBufferView} data\n * @returns {void}\n */\n LocalDataTrack.prototype.send = function (data) {\n this._trackSender.send(data);\n };\n return LocalDataTrack;\n}(Track));\n/**\n * {@link LocalDataTrack} options\n * @typedef {LocalTrackOptions} LocalDataTrackOptions\n * @property {?number} [maxPacketLifeTime=null] - Set this to limit the time\n * (in milliseconds) during which the LocalDataTrack will send or re-send data\n * if not successfully delivered on the underlying RTCDataChannel(s). It is an\n * error to specify both this and maxRetransmits.\n * @property {?number} [maxRetransmits=null] - Set this to limit the number of\n * times the {@link LocalDataTrack} will send or re-send data if not\n * acknowledged on the underlying RTCDataChannel(s). It is an error to specify\n * both this and maxPacketLifeTime.\n * @property {boolean} [ordered=true] - Set this to false to allow data on the\n * LocalDataTrack to be sent out-of-order.\n */\nmodule.exports = LocalDataTrack;\n//# sourceMappingURL=localdatatrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar DataTrackTransceiver = require('./transceiver');\nvar makeUUID = require('../util').makeUUID;\n/**\n * A {@link DataTrackSender} represents a {@link DataTrackTransceiver} over\n * which data can be sent. Internally, it uses a collection of RTCDataChannels\n * to send data.\n * @extends DataTrackTransceiver\n */\nvar DataTrackSender = /** @class */ (function (_super) {\n __extends(DataTrackSender, _super);\n /**\n * Construct a {@link DataTrackSender}.\n * @param {?number} maxPacketLifeTime\n * @param {?number} maxRetransmits\n * @param {boolean} ordered\n */\n function DataTrackSender(maxPacketLifeTime, maxRetransmtis, ordered) {\n var _this = _super.call(this, makeUUID(), maxPacketLifeTime, maxRetransmtis, ordered) || this;\n Object.defineProperties(_this, {\n _clones: {\n value: new Set()\n },\n _dataChannels: {\n value: new Set()\n }\n });\n return _this;\n }\n /**\n * Add a cloned {@link DataTrackSender}.\n * @private\n * @returns {void}\n */\n DataTrackSender.prototype._addClone = function (clone) {\n this._clones.add(clone);\n };\n /**\n * Remove a cloned {@link DataTrackSender}.\n * @returns {void}\n */\n DataTrackSender.prototype.removeClone = function (clone) {\n this._clones.delete(clone);\n };\n /**\n * Add an RTCDataChannel to the {@link DataTrackSender}.\n * @param {RTCDataChannel} dataChannel\n * @returns {this}\n */\n DataTrackSender.prototype.addDataChannel = function (dataChannel) {\n this._dataChannels.add(dataChannel);\n return this;\n };\n /**\n * Return a new {@link DataTrackSender}. Any message sent over this\n * {@link DataTrackSender} will also be sent over the clone. Whenever this\n * {@link DataTrackSender} is stopped, so to will the clone.\n * @returns {DataTrackSender}\n */\n DataTrackSender.prototype.clone = function () {\n var _this = this;\n var clone = new DataTrackSender(this.maxPacketLifeTime, this.maxRetransmits, this.ordered);\n this._addClone(clone);\n clone.once('stopped', function () { return _this.removeClone(clone); });\n return clone;\n };\n /**\n * Remove an RTCDataChannel from the {@link DataTrackSender}.\n * @param {RTCDataChannel} dataChannel\n * @returns {this}\n */\n DataTrackSender.prototype.removeDataChannel = function (dataChannel) {\n this._dataChannels.delete(dataChannel);\n return this;\n };\n /**\n * Send data over the {@link DataTrackSender}. Internally, this calls\n * send over each of the underlying RTCDataChannels.\n * @param {string|Blob|ArrayBuffer|ArrayBufferView} data\n * @returns {this}\n */\n DataTrackSender.prototype.send = function (data) {\n this._dataChannels.forEach(function (dataChannel) {\n try {\n dataChannel.send(data);\n }\n catch (error) {\n // Do nothing.\n }\n });\n this._clones.forEach(function (clone) {\n try {\n clone.send(data);\n }\n catch (error) {\n // Do nothing.\n }\n });\n return this;\n };\n DataTrackSender.prototype.stop = function () {\n this._dataChannels.forEach(function (dataChannel) { return dataChannel.close(); });\n this._clones.forEach(function (clone) { return clone.stop(); });\n _super.prototype.stop.call(this);\n };\n return DataTrackSender;\n}(DataTrackTransceiver));\nmodule.exports = DataTrackSender;\n//# sourceMappingURL=sender.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.runPreflight = exports.PreflightTest = void 0;\nvar constants_1 = require(\"../util/constants\");\nvar timer_1 = require(\"./timer\");\nvar mos_1 = require(\"./mos\");\nvar getCombinedConnectionStats_1 = require(\"./getCombinedConnectionStats\");\nvar getturncredentials_1 = require(\"./getturncredentials\");\nvar makestat_1 = require(\"./makestat\");\nvar syntheticaudio_1 = require(\"./syntheticaudio\");\nvar syntheticvideo_1 = require(\"./syntheticvideo\");\nvar index_1 = require(\"../util/index\");\nvar WS_SERVER = require('../util/constants').WS_SERVER;\nvar Log = require('../util/log');\nvar EventEmitter = require('../eventemitter');\nvar MovingAverageDelta = require('../util/movingaveragedelta');\nvar EventObserver = require('../util/eventobserver');\nvar InsightsPublisher = require('../util/insightspublisher');\nvar _a = require('../util/sid'), createSID = _a.createSID, sessionSID = _a.sessionSID;\nvar _b = require('../util/twilio-video-errors'), SignalingConnectionTimeoutError = _b.SignalingConnectionTimeoutError, MediaConnectionError = _b.MediaConnectionError;\nvar SECOND = 1000;\nvar DEFAULT_TEST_DURATION = 10 * SECOND;\n/**\n * progress values that are sent by {@link PreflightTest#event:progress}\n * @enum {string}\n */\nvar PreflightProgress = {\n /**\n * {@link PreflightTest} has successfully generated synthetic tracks\n */\n mediaAcquired: 'mediaAcquired',\n /**\n * {@link PreflightTest} has successfully connected to twilio server and obtained turn credentials\n */\n connected: 'connected',\n /**\n * SubscriberParticipant successfully subscribed to media tracks.\n */\n mediaSubscribed: 'mediaSubscribed',\n /**\n * Media flow was detected.\n */\n mediaStarted: 'mediaStarted',\n /**\n * Established DTLS connection. This is measured from RTCDtlsTransport `connecting` to `connected` state.\n * On Safari, Support for measuring this is missing, this event will be not be emitted on Safari.\n */\n dtlsConnected: 'dtlsConnected',\n /**\n * Established a PeerConnection, This is measured from PeerConnection `connecting` to `connected` state.\n * On Firefox, Support for measuring this is missing, this event will be not be emitted on Firefox.\n */\n peerConnectionConnected: 'peerConnectionConnected',\n /**\n * Established ICE connection. This is measured from ICE connection `checking` to `connected` state.\n */\n iceConnected: 'iceConnected'\n};\nfunction notEmpty(value) {\n return value !== null && typeof value !== 'undefined';\n}\nvar nInstances = 0;\n/**\n * A {@link PreflightTest} monitors progress of an ongoing preflight test.\n *

\n * Instance of {@link PreflightTest} is returned by calling {@link module:twilio-video.runPreflight}\n * @extends EventEmitter\n * @emits PreflightTest#completed\n * @emits PreflightTest#failed\n * @emits PreflightTest#progress\n */\nvar PreflightTest = /** @class */ (function (_super) {\n __extends(PreflightTest, _super);\n /**\n * Constructs {@link PreflightTest}.\n * @param {string} token\n * @param {?PreflightOptions} [options]\n */\n function PreflightTest(token, options) {\n var _this = _super.call(this) || this;\n _this._testTiming = new timer_1.Timer();\n _this._dtlsTiming = new timer_1.Timer();\n _this._iceTiming = new timer_1.Timer();\n _this._peerConnectionTiming = new timer_1.Timer();\n _this._mediaTiming = new timer_1.Timer();\n _this._connectTiming = new timer_1.Timer();\n _this._sentBytesMovingAverage = new MovingAverageDelta();\n _this._packetLossMovingAverage = new MovingAverageDelta();\n _this._progressEvents = [];\n _this._receivedBytesMovingAverage = new MovingAverageDelta();\n var internalOptions = options;\n var _a = internalOptions.environment, environment = _a === void 0 ? 'prod' : _a, _b = internalOptions.region, region = _b === void 0 ? 'gll' : _b, _c = internalOptions.duration, duration = _c === void 0 ? DEFAULT_TEST_DURATION : _c;\n // eslint-disable-next-line new-cap\n var wsServer = internalOptions.wsServer || WS_SERVER(environment, region);\n _this._log = new Log('default', _this, constants_1.DEFAULT_LOG_LEVEL, constants_1.DEFAULT_LOGGER_NAME);\n _this._testDuration = duration;\n _this._instanceId = nInstances++;\n _this._testTiming.start();\n _this._runPreflightTest(token, environment, wsServer);\n return _this;\n }\n PreflightTest.prototype.toString = function () {\n return \"[Preflight #\" + this._instanceId + \"]\";\n };\n /**\n * stops ongoing tests and emits error\n */\n PreflightTest.prototype.stop = function () {\n this._stopped = true;\n };\n PreflightTest.prototype._generatePreflightReport = function (collectedStats) {\n this._testTiming.stop();\n return {\n testTiming: this._testTiming.getTimeMeasurement(),\n networkTiming: {\n dtls: this._dtlsTiming.getTimeMeasurement(),\n ice: this._iceTiming.getTimeMeasurement(),\n peerConnection: this._peerConnectionTiming.getTimeMeasurement(),\n connect: this._connectTiming.getTimeMeasurement(),\n media: this._mediaTiming.getTimeMeasurement()\n },\n stats: {\n jitter: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.jitter),\n rtt: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.rtt),\n packetLoss: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.packetLoss),\n },\n selectedIceCandidatePairStats: collectedStats ? collectedStats.selectedIceCandidatePairStats : null,\n iceCandidateStats: collectedStats ? collectedStats.iceCandidateStats : [],\n progressEvents: this._progressEvents,\n // NOTE(mpatwardhan): internal properties.\n mos: makestat_1.makeStat(collectedStats === null || collectedStats === void 0 ? void 0 : collectedStats.mos),\n };\n };\n PreflightTest.prototype._executePreflightStep = function (stepName, step, timeoutError) {\n return __awaiter(this, void 0, void 0, function () {\n var MAX_STEP_DURATION, stepPromise, timer, timeoutPromise, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._log.debug('Executing step: ', stepName);\n MAX_STEP_DURATION = this._testDuration + 10 * SECOND;\n if (this._stopped) {\n throw new Error('stopped');\n }\n stepPromise = Promise.resolve().then(step);\n timer = null;\n timeoutPromise = new Promise(function (_resolve, reject) {\n timer = setTimeout(function () {\n reject(timeoutError || new Error(stepName + \" timeout.\"));\n }, MAX_STEP_DURATION);\n });\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 3, 4]);\n return [4 /*yield*/, Promise.race([timeoutPromise, stepPromise])];\n case 2:\n result = _a.sent();\n return [2 /*return*/, result];\n case 3:\n if (timer !== null) {\n clearTimeout(timer);\n }\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PreflightTest.prototype._collectNetworkTimings = function (pc) {\n var _this = this;\n return new Promise(function (resolve) {\n var dtlsTransport;\n pc.addEventListener('iceconnectionstatechange', function () {\n if (pc.iceConnectionState === 'checking') {\n _this._iceTiming.start();\n }\n if (pc.iceConnectionState === 'connected') {\n _this._iceTiming.stop();\n _this._updateProgress(PreflightProgress.iceConnected);\n if (!dtlsTransport || dtlsTransport && dtlsTransport.state === 'connected') {\n resolve();\n }\n }\n });\n // firefox does not support connectionstatechange.\n pc.addEventListener('connectionstatechange', function () {\n if (pc.connectionState === 'connecting') {\n _this._peerConnectionTiming.start();\n }\n if (pc.connectionState === 'connected') {\n _this._peerConnectionTiming.stop();\n _this._updateProgress(PreflightProgress.peerConnectionConnected);\n }\n });\n // Safari does not expose sender.transport.\n var senders = pc.getSenders();\n var transport = senders.map(function (sender) { return sender.transport; }).find(notEmpty);\n if (typeof transport !== 'undefined') {\n dtlsTransport = transport;\n dtlsTransport.addEventListener('statechange', function () {\n if (dtlsTransport.state === 'connecting') {\n _this._dtlsTiming.start();\n }\n if (dtlsTransport.state === 'connected') {\n _this._dtlsTiming.stop();\n _this._updateProgress(PreflightProgress.dtlsConnected);\n if (pc.iceConnectionState === 'connected') {\n resolve();\n }\n }\n });\n }\n });\n };\n PreflightTest.prototype._setupInsights = function (_a) {\n var token = _a.token, _b = _a.environment, environment = _b === void 0 ? constants_1.DEFAULT_ENVIRONMENT : _b, _c = _a.realm, realm = _c === void 0 ? constants_1.DEFAULT_REALM : _c;\n var eventPublisherOptions = {};\n var eventPublisher = new InsightsPublisher(token, constants_1.SDK_NAME, constants_1.SDK_VERSION, environment, realm, eventPublisherOptions);\n // event publisher requires room sid/participant sid. supply fake ones.\n eventPublisher.connect('PREFLIGHT_ROOM_SID', 'PREFLIGHT_PARTICIPANT');\n var eventObserver = new EventObserver(eventPublisher, Date.now(), this._log);\n // eslint-disable-next-line no-undefined\n var undefinedValue = undefined;\n return {\n reportToInsights: function (_a) {\n var _b, _c;\n var report = _a.report;\n var jitterStats = report.stats.jitter || undefinedValue;\n var rttStats = report.stats.rtt || undefinedValue;\n var packetLossStats = report.stats.packetLoss || undefinedValue;\n var mosStats = report.mos || undefinedValue;\n // stringify important info from ice candidates.\n var candidateTypeToProtocols = new Map();\n report.iceCandidateStats.forEach(function (candidateStats) {\n if (candidateStats.candidateType && candidateStats.protocol) {\n var protocols = candidateTypeToProtocols.get(candidateStats.candidateType) || [];\n if (protocols.indexOf(candidateStats.protocol) < 0) {\n protocols.push(candidateStats.protocol);\n }\n candidateTypeToProtocols.set(candidateStats.candidateType, protocols);\n }\n });\n var iceCandidateStats = JSON.stringify(Object.fromEntries(candidateTypeToProtocols));\n var insightsReport = {\n name: 'report',\n group: 'preflight',\n level: report.error ? 'error' : 'info',\n payload: {\n sessionSID: sessionSID,\n preflightSID: createSID('PF'),\n progressEvents: JSON.stringify(report.progressEvents),\n testTiming: report.testTiming,\n dtlsTiming: report.networkTiming.dtls,\n iceTiming: report.networkTiming.ice,\n peerConnectionTiming: report.networkTiming.peerConnection,\n connectTiming: report.networkTiming.connect,\n mediaTiming: report.networkTiming.media,\n selectedLocalCandidate: (_b = report.selectedIceCandidatePairStats) === null || _b === void 0 ? void 0 : _b.localCandidate,\n selectedRemoteCandidate: (_c = report.selectedIceCandidatePairStats) === null || _c === void 0 ? void 0 : _c.remoteCandidate,\n iceCandidateStats: iceCandidateStats,\n jitterStats: jitterStats,\n rttStats: rttStats,\n packetLossStats: packetLossStats,\n mosStats: mosStats,\n error: report.error\n }\n };\n eventObserver.emit('event', insightsReport);\n setTimeout(function () { return eventPublisher.disconnect(); }, 2000);\n }\n };\n };\n PreflightTest.prototype._runPreflightTest = function (token, environment, wsServer) {\n return __awaiter(this, void 0, void 0, function () {\n var localTracks, pcs, reportToInsights, elements_1, iceServers, senderPC_1, receiverPC_1, remoteTracks_1, collectedStats_1, report, error_1, preflightReport;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n localTracks = [];\n pcs = [];\n reportToInsights = this._setupInsights({ token: token, environment: environment }).reportToInsights;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 8, 9, 10]);\n elements_1 = [];\n return [4 /*yield*/, this._executePreflightStep('Acquire media', function () { return [syntheticaudio_1.syntheticAudio(), syntheticvideo_1.syntheticVideo({ width: 640, height: 480 })]; })];\n case 2:\n localTracks = _a.sent();\n this._updateProgress(PreflightProgress.mediaAcquired);\n this.emit('debug', { localTracks: localTracks });\n this._connectTiming.start();\n return [4 /*yield*/, this._executePreflightStep('Get turn credentials', function () { return getturncredentials_1.getTurnCredentials(token, wsServer); }, new SignalingConnectionTimeoutError())];\n case 3:\n iceServers = _a.sent();\n this._connectTiming.stop();\n this._updateProgress(PreflightProgress.connected);\n senderPC_1 = new RTCPeerConnection({ iceServers: iceServers, iceTransportPolicy: 'relay', bundlePolicy: 'max-bundle' });\n receiverPC_1 = new RTCPeerConnection({ iceServers: iceServers, bundlePolicy: 'max-bundle' });\n pcs.push(senderPC_1);\n pcs.push(receiverPC_1);\n this._mediaTiming.start();\n return [4 /*yield*/, this._executePreflightStep('Setup Peer Connections', function () { return __awaiter(_this, void 0, void 0, function () {\n var remoteTracksPromise, offer, updatedOffer, answer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n senderPC_1.addEventListener('icecandidate', function (event) { return event.candidate && receiverPC_1.addIceCandidate(event.candidate); });\n receiverPC_1.addEventListener('icecandidate', function (event) { return event.candidate && senderPC_1.addIceCandidate(event.candidate); });\n localTracks.forEach(function (track) { return senderPC_1.addTrack(track); });\n remoteTracksPromise = new Promise(function (resolve) {\n var remoteTracks = [];\n receiverPC_1.addEventListener('track', function (event) {\n remoteTracks.push(event.track);\n if (remoteTracks.length === localTracks.length) {\n resolve(remoteTracks);\n }\n });\n });\n return [4 /*yield*/, senderPC_1.createOffer()];\n case 1:\n offer = _a.sent();\n updatedOffer = offer;\n return [4 /*yield*/, senderPC_1.setLocalDescription(updatedOffer)];\n case 2:\n _a.sent();\n return [4 /*yield*/, receiverPC_1.setRemoteDescription(updatedOffer)];\n case 3:\n _a.sent();\n return [4 /*yield*/, receiverPC_1.createAnswer()];\n case 4:\n answer = _a.sent();\n return [4 /*yield*/, receiverPC_1.setLocalDescription(answer)];\n case 5:\n _a.sent();\n return [4 /*yield*/, senderPC_1.setRemoteDescription(answer)];\n case 6:\n _a.sent();\n return [4 /*yield*/, this._collectNetworkTimings(senderPC_1)];\n case 7:\n _a.sent();\n return [2 /*return*/, remoteTracksPromise];\n }\n });\n }); }, new MediaConnectionError())];\n case 4:\n remoteTracks_1 = _a.sent();\n this.emit('debug', { remoteTracks: remoteTracks_1 });\n remoteTracks_1.forEach(function (track) {\n track.addEventListener('ended', function () { return _this._log.warn(track.kind + ':ended'); });\n track.addEventListener('mute', function () { return _this._log.warn(track.kind + ':muted'); });\n track.addEventListener('unmute', function () { return _this._log.warn(track.kind + ':unmuted'); });\n });\n this._updateProgress(PreflightProgress.mediaSubscribed);\n return [4 /*yield*/, this._executePreflightStep('Wait for tracks to start', function () {\n return new Promise(function (resolve) {\n var element = document.createElement('video');\n element.autoplay = true;\n element.playsInline = true;\n element.muted = true;\n element.srcObject = new MediaStream(remoteTracks_1);\n elements_1.push(element);\n _this.emit('debugElement', element);\n element.oncanplay = resolve;\n });\n }, new MediaConnectionError())];\n case 5:\n _a.sent();\n this._mediaTiming.stop();\n this._updateProgress(PreflightProgress.mediaStarted);\n return [4 /*yield*/, this._executePreflightStep('Collect stats for duration', function () { return _this._collectRTCStatsForDuration(_this._testDuration, initCollectedStats(), senderPC_1, receiverPC_1); })];\n case 6:\n collectedStats_1 = _a.sent();\n return [4 /*yield*/, this._executePreflightStep('Generate report', function () { return _this._generatePreflightReport(collectedStats_1); })];\n case 7:\n report = _a.sent();\n reportToInsights({ report: report });\n this.emit('completed', report);\n return [3 /*break*/, 10];\n case 8:\n error_1 = _a.sent();\n preflightReport = this._generatePreflightReport();\n reportToInsights({ report: __assign(__assign({}, preflightReport), { error: error_1 === null || error_1 === void 0 ? void 0 : error_1.toString() }) });\n this.emit('failed', error_1, preflightReport);\n return [3 /*break*/, 10];\n case 9:\n pcs.forEach(function (pc) { return pc.close(); });\n localTracks.forEach(function (track) { return track.stop(); });\n return [7 /*endfinally*/];\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n PreflightTest.prototype._collectRTCStats = function (collectedStats, senderPC, receiverPC) {\n return __awaiter(this, void 0, void 0, function () {\n var combinedStats, timestamp, bytesSent, bytesReceived, packets, packetsLost, roundTripTime, jitter, selectedIceCandidatePairStats, iceCandidateStats, hasLastData, fractionPacketLost, percentPacketsLost, score;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, getCombinedConnectionStats_1.getCombinedConnectionStats({ publisher: senderPC, subscriber: receiverPC })];\n case 1:\n combinedStats = _a.sent();\n timestamp = combinedStats.timestamp, bytesSent = combinedStats.bytesSent, bytesReceived = combinedStats.bytesReceived, packets = combinedStats.packets, packetsLost = combinedStats.packetsLost, roundTripTime = combinedStats.roundTripTime, jitter = combinedStats.jitter, selectedIceCandidatePairStats = combinedStats.selectedIceCandidatePairStats, iceCandidateStats = combinedStats.iceCandidateStats;\n hasLastData = collectedStats.jitter.length > 0;\n collectedStats.jitter.push(jitter);\n collectedStats.rtt.push(roundTripTime);\n this._sentBytesMovingAverage.putSample(bytesSent, timestamp);\n this._receivedBytesMovingAverage.putSample(bytesReceived, timestamp);\n this._packetLossMovingAverage.putSample(packetsLost, packets);\n if (hasLastData) {\n // convert BytesMovingAverage which is in bytes/millisecond to bits/second\n collectedStats.outgoingBitrate.push(this._sentBytesMovingAverage.get() * 1000 * 8);\n collectedStats.incomingBitrate.push(this._receivedBytesMovingAverage.get() * 1000 * 8);\n fractionPacketLost = this._packetLossMovingAverage.get();\n percentPacketsLost = Math.min(100, fractionPacketLost * 100);\n collectedStats.packetLoss.push(percentPacketsLost);\n score = mos_1.calculateMOS(roundTripTime, jitter, fractionPacketLost);\n collectedStats.mos.push(score);\n }\n if (!collectedStats.selectedIceCandidatePairStats) {\n collectedStats.selectedIceCandidatePairStats = selectedIceCandidatePairStats;\n }\n if (collectedStats.iceCandidateStats.length === 0) {\n collectedStats.iceCandidateStats = iceCandidateStats;\n }\n return [2 /*return*/];\n }\n });\n });\n };\n PreflightTest.prototype._collectRTCStatsForDuration = function (duration, collectedStats, senderPC, receiverPC) {\n return __awaiter(this, void 0, void 0, function () {\n var startTime, STAT_INTERVAL, remainingDuration;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n startTime = Date.now();\n STAT_INTERVAL = Math.min(1000, duration);\n return [4 /*yield*/, index_1.waitForSometime(STAT_INTERVAL)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this._collectRTCStats(collectedStats, senderPC, receiverPC)];\n case 2:\n _a.sent();\n remainingDuration = duration - (Date.now() - startTime);\n if (!(remainingDuration > 0)) return [3 /*break*/, 4];\n return [4 /*yield*/, this._collectRTCStatsForDuration(remainingDuration, collectedStats, senderPC, receiverPC)];\n case 3:\n collectedStats = _a.sent();\n _a.label = 4;\n case 4: return [2 /*return*/, collectedStats];\n }\n });\n });\n };\n PreflightTest.prototype._updateProgress = function (name) {\n var duration = Date.now() - this._testTiming.getTimeMeasurement().start;\n this._progressEvents.push({ duration: duration, name: name });\n this.emit('progress', name);\n };\n return PreflightTest;\n}(EventEmitter));\nexports.PreflightTest = PreflightTest;\nfunction initCollectedStats() {\n return {\n mos: [],\n jitter: [],\n rtt: [],\n outgoingBitrate: [],\n incomingBitrate: [],\n packetLoss: [],\n selectedIceCandidatePairStats: null,\n iceCandidateStats: [],\n };\n}\n/**\n * Represents network timing measurements captured during preflight test\n * @typedef {object} NetworkTiming\n * @property {TimeMeasurement} [connect] - Time to establish signaling connection and acquire turn credentials\n * @property {TimeMeasurement} [media] - Time to start media. This is measured from calling connect to remote media getting started.\n * @property {TimeMeasurement} [dtls] - Time to establish dtls connection. This is measured from RTCDtlsTransport `connecting` to `connected` state. (Not available on Safari)\n * @property {TimeMeasurement} [ice] - Time to establish ice connectivity. This is measured from ICE connection `checking` to `connected` state.\n * @property {TimeMeasurement} [peerConnection] - Time to establish peer connectivity. This is measured from PeerConnection `connecting` to `connected` state. (Not available on Firefox)\n */\n/**\n * Represents stats for a numerical metric.\n * @typedef {object} Stats\n * @property {number} [average] - Average value observed.\n * @property {number} [max] - Max value observed.\n * @property {number} [min] - Min value observed.\n */\n/**\n * Represents stats for a numerical metric.\n * @typedef {object} SelectedIceCandidatePairStats\n * @property {RTCIceCandidateStats} [localCandidate] - Selected local ice candidate\n * @property {RTCIceCandidateStats} [remoteCandidate] - Selected local ice candidate\n */\n/**\n * Represents RTC related stats that were observed during preflight test\n * @typedef {object} PreflightReportStats\n * @property {Stats} [jitter] - Packet delay variation in seconds\n * @property {Stats} [rtt] - Round trip time, to the server back to the client in milliseconds.\n * @property {Stats} [packetLoss] - Packet loss as a percent of total packets sent.\n*/\n/**\n * A {@link PreflightProgress} event with timing information.\n * @typedef {object} ProgressEvent\n * @property {number} [duration] - The duration of the event, measured from the start of the test.\n * @property {string} [name] - The {@link PreflightProgress} event name.\n */\n/**\n * Represents report generated by {@link PreflightTest}.\n * @typedef {object} PreflightTestReport\n * @property {TimeMeasurement} [testTiming] - Time measurements of test run time.\n * @property {NetworkTiming} [networkTiming] - Network related time measurements.\n * @property {PreflightReportStats} [stats] - RTC related stats captured during the test.\n * @property {Array} [iceCandidateStats] - List of gathered ice candidates.\n * @property {SelectedIceCandidatePairStats} selectedIceCandidatePairStats - Stats for the ice candidates that were used for the connection.\n * @property {Array} [progressEvents] - {@link ProgressEvent} events detected during the test.\n * Use this information to determine which steps were completed and which ones were not.\n */\n/**\n * You may pass these options to {@link module:twilio-video.testPreflight} in order to override the\n * default behavior.\n * @typedef {object} PreflightOptions\n * @property {string} [region='gll'] - Preferred signaling region; By default, you will be connected to the\n * nearest signaling server determined by latency based routing. Setting a value other\n * than gll bypasses routing and guarantees that signaling traffic will be\n * terminated in the region that you prefer. Please refer to this table\n * for the list of supported signaling regions.\n * @property {number} [duration=10000] - number of milliseconds to run test for.\n * once connected test will run for this duration before generating the stats report.\n */\n/**\n * Preflight test has completed successfully.\n * @param {PreflightTestReport} report - Results of the test.\n * @event PreflightTest#completed\n */\n/**\n * Preflight test has encountered a failure and is now stopped.\n * @param {TwilioError|Error} error - A TwilioError or a DOMException.\n * Possible TwilioErrors include Signaling and Media related errors which can be found\n * here.\n * @param {PreflightTestReport} report - Partial results gathered during the test. Use this information to help determine the cause of failure.\n * @event PreflightTest#failed\n */\n/**\n * Emitted to indicate progress of the test\n * @param {PreflightProgress} progress - Indicates the status completed.\n * @event PreflightTest#progress\n */\n/**\n * @method\n * @name runPreflight\n * @description Run a preflight test. This method will start a test to check the quality of network connection.\n * @memberof module:twilio-video\n * @param {string} token - The Access Token string\n * @param {PreflightOptions} options - Options for the test\n * @returns {PreflightTest} preflightTest - An instance to be used to monitor progress of the test.\n * @example\n * var { runPreflight } = require('twilio-video');\n * var preflight = runPreflight(token, preflightOptions);\n * preflightTest.on('progress', progress => {\n * console.log('preflight progress:', progress);\n * });\n *\n * preflightTest.on('failed', (error, report) => {\n * console.error('preflight error:', error, report);\n * });\n *\n * preflightTest.on('completed', report => {\n * console.log('preflight completed:', report));\n * });\n*/\nfunction runPreflight(token, options) {\n if (options === void 0) { options = {}; }\n var preflight = new PreflightTest(token, options);\n return preflight;\n}\nexports.runPreflight = runPreflight;\n//# sourceMappingURL=preflighttest.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Timer = void 0;\nvar Timer = /** @class */ (function () {\n function Timer() {\n // eslint-disable-next-line no-undefined\n this._end = undefined;\n this.start();\n }\n Timer.prototype.start = function () {\n this._start = Date.now();\n return this;\n };\n Timer.prototype.stop = function () {\n this._end = Date.now();\n return this;\n };\n Timer.prototype.getTimeMeasurement = function () {\n return {\n start: this._start,\n end: this._end,\n // eslint-disable-next-line no-undefined\n duration: this._end === undefined ? undefined : this._end - this._start\n };\n };\n return Timer;\n}());\nexports.Timer = Timer;\n//# sourceMappingURL=timer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mosToScore = exports.calculateMOS = void 0;\nvar r0 = 94.768; // Constant used in computing \"rFactor\".\n// copied from https://code.hq.twilio.com/client/sdk-frd/blob/master/voice/voice-mos-calculation.md\nfunction calculateMOS(rtt, jitter, fractionLost) {\n // Compute the effective latency.\n var effectiveLatency = rtt + (jitter * 2) + 10;\n // Compute the initial \"rFactor\" from effective latency.\n var rFactor = 0;\n switch (true) {\n case effectiveLatency < 160:\n rFactor = r0 - (effectiveLatency / 40);\n break;\n case effectiveLatency < 1000:\n rFactor = r0 - ((effectiveLatency - 120) / 10);\n break;\n }\n // Adjust \"rFactor\" with the fraction of packets lost.\n switch (true) {\n case fractionLost <= (rFactor / 2.5):\n rFactor = Math.max(rFactor - fractionLost * 2.5, 6.52);\n break;\n default:\n rFactor = 0;\n break;\n }\n // Compute MOS from \"rFactor\".\n var mos = 1 +\n (0.035 * rFactor) +\n (0.000007 * rFactor) *\n (rFactor - 60) *\n (100 - rFactor);\n return mos;\n}\nexports.calculateMOS = calculateMOS;\nfunction mosToScore(mosValue) {\n var score = 0;\n if (!mosValue) {\n score = 0;\n }\n else if (mosValue > 4.2) {\n score = 5;\n }\n else if (mosValue > 4.0) {\n score = 4;\n }\n else if (mosValue > 3.6) {\n score = 3;\n }\n else if (mosValue > 3) {\n score = 2;\n }\n else {\n score = 1;\n }\n return score;\n}\nexports.mosToScore = mosToScore;\n//# sourceMappingURL=mos.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCombinedConnectionStats = void 0;\nfunction getStatValues(report, statName, kind, reportTypes) {\n var results = [];\n report.forEach(function (stat) {\n if ((reportTypes.length === 0 || reportTypes.includes(stat.type)) &&\n (kind.length === 0 || kind.includes(stat.kind)) &&\n typeof stat[statName] === 'number') {\n results.push(stat[statName]);\n }\n });\n return results;\n}\nfunction getCombinedConnectionStats(_a) {\n var publisher = _a.publisher, subscriber = _a.subscriber;\n return __awaiter(this, void 0, void 0, function () {\n var _b, publisherStats, subscriberStats, timestamps, timestamp, jitter, packets, packetsLost, trackRoundTripTime, currentRoundTripTime, roundTripTime, bytesSent, bytesReceived, selectedIceCandidatePairStats, iceCandidateStats;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, Promise.all([publisher, subscriber].map(function (pc) { return pc.getStats(); }))];\n case 1:\n _b = __read.apply(void 0, [_c.sent(), 2]), publisherStats = _b[0], subscriberStats = _b[1];\n timestamps = getStatValues(subscriberStats, 'timestamp', ['audio'], ['inbound-rtp']);\n timestamp = timestamps.length > 0 ? timestamps[0] : 0;\n jitter = getStatValues(subscriberStats, 'jitter', ['audio'], ['inbound-rtp']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n packets = getStatValues(subscriberStats, 'packetsReceived', ['audio', 'video'], ['inbound-rtp']).reduce(function (a, b) { return a + b; }, 0);\n packetsLost = getStatValues(subscriberStats, 'packetsLost', ['audio', 'video'], ['inbound-rtp']).reduce(function (a, b) { return a + b; }, 0);\n trackRoundTripTime = getStatValues(publisherStats, 'roundTripTime', ['audio', 'video'], ['remote-inbound-rtp']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n currentRoundTripTime = getStatValues(subscriberStats, 'currentRoundTripTime', [], ['candidate-pair']).reduce(function (a, b) { return Math.max(a, b); }, 0);\n roundTripTime = (currentRoundTripTime || trackRoundTripTime) * 1000;\n bytesSent = getStatValues(publisherStats, 'bytesSent', [], ['candidate-pair']).reduce(function (a, b) { return a + b; }, 0);\n bytesReceived = getStatValues(subscriberStats, 'bytesReceived', [], ['candidate-pair']).reduce(function (a, b) { return a + b; }, 0);\n selectedIceCandidatePairStats = extractSelectedActiveCandidatePair(subscriberStats);\n iceCandidateStats = [];\n subscriberStats.forEach(function (stat) {\n if (stat.type === 'local-candidate' || stat.type === 'remote-candidate') {\n iceCandidateStats.push(makeStandardCandidateStats(stat));\n }\n });\n return [2 /*return*/, { timestamp: timestamp, jitter: jitter, packets: packets, packetsLost: packetsLost, roundTripTime: roundTripTime, bytesSent: bytesSent, bytesReceived: bytesReceived, selectedIceCandidatePairStats: selectedIceCandidatePairStats, iceCandidateStats: iceCandidateStats }];\n }\n });\n });\n}\nexports.getCombinedConnectionStats = getCombinedConnectionStats;\nfunction makeStandardCandidateStats(input) {\n var standardizedCandidateStatsKeys = [\n { key: 'transportId', type: 'string' },\n { key: 'candidateType', type: 'string' },\n { key: 'port', altKeys: ['portNumber'], type: 'number' },\n { key: 'address', altKeys: ['ip', 'ipAddress'], type: 'string' },\n { key: 'priority', type: 'number' },\n { key: 'protocol', altKeys: ['transport'], type: 'string' },\n { key: 'url', type: 'string' },\n { key: 'relayProtocol', type: 'string' },\n ];\n return standardizedCandidateStatsKeys.reduce(function (report, keyInfo) {\n var keysToLookFor = [keyInfo.key];\n if (keyInfo.altKeys) {\n keysToLookFor = keysToLookFor.concat(keyInfo.altKeys);\n }\n var key = keysToLookFor.find(function (key) { return key in input; });\n if (key && typeof input[key] === keyInfo.type) {\n report[keyInfo.key] = input[key];\n }\n return report;\n }, {});\n}\nfunction extractSelectedActiveCandidatePair(stats) {\n var selectedCandidatePairId = null;\n var candidatePairs = [];\n stats.forEach(function (stat) {\n if (stat.type === 'transport' && stat.selectedCandidatePairId) {\n selectedCandidatePairId = stat.selectedCandidatePairId;\n }\n else if (stat.type === 'candidate-pair') {\n candidatePairs.push(stat);\n }\n });\n var activeCandidatePairStatsFound = candidatePairs.find(function (pair) {\n // Firefox\n return pair.selected ||\n // Spec-compliant way\n (selectedCandidatePairId && pair.id === selectedCandidatePairId);\n });\n if (!activeCandidatePairStatsFound) {\n return null;\n }\n var activeCandidatePairStats = activeCandidatePairStatsFound;\n var activeLocalCandidateStats = stats.get(activeCandidatePairStats.localCandidateId);\n var activeRemoteCandidateStats = stats.get(activeCandidatePairStats.remoteCandidateId);\n if (!activeLocalCandidateStats || !activeRemoteCandidateStats) {\n return null;\n }\n return {\n localCandidate: makeStandardCandidateStats(activeLocalCandidateStats),\n remoteCandidate: makeStandardCandidateStats(activeRemoteCandidateStats)\n };\n}\n//# sourceMappingURL=getCombinedConnectionStats.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTurnCredentials = void 0;\n/* eslint-disable camelcase */\nvar TwilioConnection = require('../twilioconnection.js');\nvar ICE_VERSION = require('../util/constants').ICE_VERSION;\nvar _a = require('../util/twilio-video-errors'), createTwilioError = _a.createTwilioError, SignalingConnectionError = _a.SignalingConnectionError;\nvar events_1 = require(\"events\");\nfunction getTurnCredentials(token, wsServer) {\n return new Promise(function (resolve, reject) {\n var eventObserver = new events_1.EventEmitter();\n var connectionOptions = {\n networkMonitor: null,\n eventObserver: eventObserver,\n helloBody: {\n edge: 'roaming',\n preflight: true,\n token: token,\n type: 'ice',\n version: ICE_VERSION\n },\n };\n var twilioConnection = new TwilioConnection(wsServer, connectionOptions);\n var done = false;\n twilioConnection.once('close', function () {\n if (!done) {\n done = true;\n reject(new SignalingConnectionError());\n }\n });\n twilioConnection.on('message', function (messageData) {\n var code = messageData.code, message = messageData.message, ice_servers = messageData.ice_servers, type = messageData.type;\n if ((type === 'iced' || type === 'error') && !done) {\n done = true;\n if (type === 'iced') {\n resolve(ice_servers);\n }\n else {\n reject(createTwilioError(code, message));\n }\n twilioConnection.close();\n }\n });\n });\n}\nexports.getTurnCredentials = getTurnCredentials;\n//# sourceMappingURL=getturncredentials.js.map","'use strict';\n/**\n * Monitor the network connection status to detect interruptions and handoffs.\n */\nvar NetworkMonitor = /** @class */ (function () {\n /**\n * Construct a {@link NetworkMonitor}.\n * @param {function} onNetworkChanged\n * @param {*} [options]\n */\n function NetworkMonitor(onNetworkChanged, options) {\n var _this = this;\n options = Object.assign({\n navigator: navigator,\n window: window,\n }, options);\n var nav = options.navigator;\n var connection = nav.connection || { type: null };\n var type = connection.type;\n var _a = connection.type ? {\n _events: {\n value: ['change', 'typechange']\n },\n _listener: {\n value: function () {\n var networkChanged = type !== _this.type && _this.isOnline;\n type = _this.type;\n if (networkChanged) {\n onNetworkChanged();\n }\n }\n },\n _target: {\n value: connection\n }\n } : {\n _events: {\n value: ['online']\n },\n _listener: {\n value: onNetworkChanged\n },\n _target: {\n value: options.window\n }\n }, _events = _a._events, _listener = _a._listener, _target = _a._target;\n Object.defineProperties(this, {\n isOnline: {\n enumerable: true,\n get: function () {\n return typeof nav.onLine === 'boolean'\n ? nav.onLine\n : true;\n }\n },\n type: {\n enumerable: true,\n get: function () {\n return connection.type || null;\n }\n },\n _listener: _listener,\n _events: _events,\n _target: _target\n });\n }\n /**\n * Start the {@link NetworkMonitor}.\n */\n NetworkMonitor.prototype.start = function () {\n var _this = this;\n this._events.forEach(function (event) {\n _this._target.addEventListener(event, _this._listener);\n });\n };\n /**\n * Stop the {@link NetworkMonitor}.\n */\n NetworkMonitor.prototype.stop = function () {\n var _this = this;\n this._events.forEach(function (event) {\n _this._target.removeEventListener(event, _this._listener);\n });\n };\n return NetworkMonitor;\n}());\nmodule.exports = NetworkMonitor;\n//# sourceMappingURL=networkmonitor.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\n/**\n * @extends Error\n * @property {number} code - Error code\n */\nvar TwilioError = /** @class */ (function (_super) {\n __extends(TwilioError, _super);\n /**\n * Creates a new {@link TwilioError}\n * @param {number} code - Error code\n * @param {string} [message] - Error message\n * @param {string} [fileName] - Name of the script file where error was generated\n * @param {number} [lineNumber] - Line number of the script file where error was generated\n */\n function TwilioError(code) {\n var _this = this;\n var args = [].slice.call(arguments, 1);\n _this = _super.apply(this, __spreadArray([], __read(args))) || this;\n Object.setPrototypeOf(_this, TwilioError.prototype);\n var error = Error.apply(_this, args);\n error.name = 'TwilioError';\n Object.defineProperty(_this, 'code', {\n value: code,\n enumerable: true\n });\n Object.getOwnPropertyNames(error).forEach(function (prop) {\n Object.defineProperty(this, prop, {\n value: error[prop],\n enumerable: true\n });\n }, _this);\n return _this;\n }\n /**\n * Returns human readable string describing the error.\n * @returns {string}\n */\n TwilioError.prototype.toString = function () {\n var message = this.message ? \": \" + this.message : '';\n return this.name + \" \" + this.code + message;\n };\n return TwilioError;\n}(Error));\nmodule.exports = TwilioError;\n//# sourceMappingURL=twilioerror.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeStat = void 0;\n/**\n * Computes min, max, average for given array.\n * @param {Array} values\n * @returns {{min: number, max: number: average: number}|null}\n */\nfunction makeStat(values) {\n if (values && values.length) {\n var min = Math.min.apply(Math, __spreadArray([], __read(values)));\n var max = Math.max.apply(Math, __spreadArray([], __read(values)));\n var average = values.reduce(function (total, value) { return total + value; }, 0) / values.length;\n return { min: min, max: max, average: average };\n }\n return null;\n}\nexports.makeStat = makeStat;\n//# sourceMappingURL=makestat.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.syntheticAudio = void 0;\nfunction syntheticAudio() {\n // NOTE(mpatwardhan): We have to delay require-ing AudioContextFactory, because\n // it exports a default instance whose constructor calls Object.assign.\n var audioContextFactory = require('../webaudio/audiocontext');\n var holder = {};\n var audioContext = audioContextFactory.getOrCreate(holder);\n var oscillator = audioContext.createOscillator();\n var dst = oscillator.connect(audioContext.createMediaStreamDestination());\n oscillator.start();\n var track = dst.stream.getAudioTracks()[0];\n var originalStop = track.stop;\n track.stop = function () {\n originalStop.call(track);\n audioContextFactory.release(holder);\n };\n return track;\n}\nexports.syntheticAudio = syntheticAudio;\n//# sourceMappingURL=syntheticaudio.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.syntheticVideo = void 0;\nfunction syntheticVideo(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.width, width = _c === void 0 ? 640 : _c, _d = _b.height, height = _d === void 0 ? 480 : _d;\n var canvas = Object.assign(document.createElement('canvas'), { width: width, height: height });\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'green';\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n var stopped = false;\n requestAnimationFrame(function animate() {\n if (!stopped) {\n // draw random rect/circle.\n var r = Math.round(Math.random() * 255);\n var g = Math.round(Math.random() * 255);\n var b = Math.round(Math.random() * 255);\n var a = Math.round(Math.random() * 255);\n ctx.fillStyle = \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + a + \")\";\n ctx.fillRect(Math.random() * width, Math.random() * height, 50, 50);\n requestAnimationFrame(animate);\n }\n });\n var stream = canvas.captureStream(30);\n var track = stream.getTracks()[0];\n var originalStop = track.stop;\n track.stop = function () {\n stopped = true;\n originalStop.call(track);\n };\n return track;\n}\nexports.syntheticVideo = syntheticVideo;\n//# sourceMappingURL=syntheticvideo.js.map","'use strict';\nvar MediaStreamTrack = require('./webrtc').MediaStreamTrack;\nvar _a = require('./webrtc/util'), guessBrowser = _a.guessBrowser, guessBrowserVersion = _a.guessBrowserVersion, isCodecSupported = _a.isCodecSupported;\nvar createCancelableRoomPromise = require('./cancelableroompromise');\nvar EncodingParametersImpl = require('./encodingparameters');\nvar LocalParticipant = require('./localparticipant');\nvar InsightsPublisher = require('./util/insightspublisher');\nvar NullInsightsPublisher = require('./util/insightspublisher/null');\nvar _b = require('./media/track/es5'), LocalAudioTrack = _b.LocalAudioTrack, LocalDataTrack = _b.LocalDataTrack, LocalVideoTrack = _b.LocalVideoTrack;\nvar NetworkQualityConfigurationImpl = require('./networkqualityconfiguration');\nvar Room = require('./room');\nvar SignalingV2 = require('./signaling/v2');\nvar _c = require('./util'), asLocalTrack = _c.asLocalTrack, buildLogLevels = _c.buildLogLevels, filterObject = _c.filterObject, isNonArrayObject = _c.isNonArrayObject;\nvar _d = require('./util/constants'), DEFAULT_ENVIRONMENT = _d.DEFAULT_ENVIRONMENT, DEFAULT_LOG_LEVEL = _d.DEFAULT_LOG_LEVEL, DEFAULT_LOGGER_NAME = _d.DEFAULT_LOGGER_NAME, DEFAULT_REALM = _d.DEFAULT_REALM, DEFAULT_REGION = _d.DEFAULT_REGION, WS_SERVER = _d.WS_SERVER, SDK_NAME = _d.SDK_NAME, SDK_VERSION = _d.SDK_VERSION, E = _d.typeErrors;\nvar CancelablePromise = require('./util/cancelablepromise');\nvar EventObserver = require('./util/eventobserver');\nvar DefaultLog = require('./util/log');\nvar validateBandwidthProfile = require('./util/validate').validateBandwidthProfile;\nvar safariVersion = guessBrowser() === 'safari' && guessBrowserVersion();\n// This is used to make out which connect() call a particular Log statement\n// belongs to. Each call to connect() increments this counter.\nvar connectCalls = 0;\nvar didPrintSafariWarning = false;\nvar isSafariWithoutVP8Support = false;\nif (safariVersion) {\n var safariMajorVersion = safariVersion.major, safariMinorVersion = safariVersion.minor;\n isSafariWithoutVP8Support = safariMajorVersion < 12 || (safariMajorVersion === 12 && safariMinorVersion < 1);\n}\nvar deprecatedConnectOptionsProps = new Set([\n { didWarn: false, shouldDelete: true, name: 'abortOnIceServersTimeout' },\n { didWarn: false, shouldDelete: true, name: 'dscpTagging', newName: 'enableDscp' },\n { didWarn: false, shouldDelete: true, name: 'iceServersTimeout' },\n { didWarn: false, shouldDelete: false, name: 'eventListener', newName: 'Video.Logger' },\n { didWarn: false, shouldDelete: false, name: 'logLevel', newName: 'Video.Logger' },\n]);\nvar deprecatedBandwidthProfileOptions = new Set([\n { didWarn: false, shouldDelete: false, name: 'maxTracks', newName: 'bandwidthProfile.video.clientTrackSwitchOffControl' },\n { didWarn: false, shouldDelete: false, name: 'renderDimensions', newName: 'bandwidthProfile.video.contentPreferencesMode' },\n]);\n/**\n * Connect to a {@link Room}.\n *

\n * By default, this will automatically acquire an array containing a\n * {@link LocalAudioTrack} and {@link LocalVideoTrack} before connecting to\n * the {@link Room}. These will be stopped when you disconnect from the\n * {@link Room}.\n *

\n * You can override the default behavior by specifying\n * options. For example, rather than acquiring a\n * {@link LocalAudioTrack} and {@link LocalVideoTrack} automatically, you can\n * pass your own array which you can stop yourself. See {@link ConnectOptions}\n * for more information.\n * @alias module:twilio-video.connect\n * @param {string} token - The Access Token string\n * @param {ConnectOptions} [options] - Options to override the default behavior, invalid options are ignored.\n * @returns {CancelablePromise}\n * @throws {RangeError}\n * @throws {TwilioError}\n * @throws {TypeError}\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n * Video.connect(token, {\n * name: 'my-cool-room'\n * }).then(function(room) {\n * room.on('participantConnected', function(participant) {\n * console.log(participant.identity + ' has connected');\n * });\n\n * room.once('disconnected', function() {\n * console.log('You left the Room:', room.name);\n * });\n * }).catch(error => {\n * console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with audio-only\n * Video.connect(token, {\n * name: 'my-cool-room',\n * audio: true\n * }).then(function(room) {\n * room.on('participantConnected', function(participant) {\n * console.log(participant.identity + ' has connected');\n * });\n *\n * room.once('disconnected', function() {\n * console.log('You left the Room:', room.name);\n * });\n * }).catch(error => {\n * console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with media acquired using getUserMedia()\n * navigator.mediaDevices.getUserMedia({\n * audio: true,\n * video: true\n * }).then(function(mediaStream) {\n * return Video.connect(token, {\n * name: 'my-cool-room',\n * tracks: mediaStream.getTracks()\n * });\n * }).then(function(room) {\n * room.on('participantConnected', function(participant) {\n * console.log(participant.identity + ' has connected');\n * });\n *\n * room.once('disconnected', function() {\n * console.log('You left the Room:', room.name);\n * });\n * }).catch(error => {\n * console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * var Video = require('twilio-video');\n * var token = getAccessToken();\n *\n * // Connect with custom names for LocalAudioTrack and LocalVideoTrack\n * Video.connect(token, {\n * name: 'my-cool-room'\n * audio: { name: 'microphone' },\n * video: { name: 'camera' }\n * }).then(function(room) {\n * room.localParticipants.trackPublications.forEach(function(publication) {\n * console.log('The LocalTrack \"' + publication.trackName + '\" was successfully published');\n * });\n * }).catch(error => {\n * console.log('Could not connect to the Room:', error.message);\n * });\n * @example\n * // Accessing the SDK logger\n * var { Logger, connect } = require('twilio-video');\n * var token = getAccessToken();\n *\n * var logger = Logger.getLogger('twilio-video');\n *\n * // Listen for logs\n * var originalFactory = logger.methodFactory;\n * logger.methodFactory = function (methodName, logLevel, loggerName) {\n * var method = originalFactory(methodName, logLevel, loggerName);\n *\n * return function (datetime, logLevel, component, message, data) {\n * method(datetime, logLevel, component, message, data);\n * // Send to your own server\n * postDataToServer(arguments);\n * };\n * };\n * logger.setLevel('debug');\n *\n * connect(token, {\n * name: 'my-cool-room'\n * }).then(function(room) {\n * room.on('participantConnected', function(participant) {\n * console.log(participant.identity + ' has connected');\n * });\n * }).catch(error => {\n * console.log('Could not connect to the Room:', error.message);\n * });\n */\nfunction connect(token, options) {\n if (typeof options === 'undefined') {\n options = {};\n }\n if (!isNonArrayObject(options)) {\n return CancelablePromise.reject(E.INVALID_TYPE('options', 'object'));\n }\n var Log = options.Log || DefaultLog;\n var loggerName = options.loggerName || DEFAULT_LOGGER_NAME;\n var logLevel = options.logLevel || DEFAULT_LOG_LEVEL;\n var logLevels = buildLogLevels(logLevel);\n var logComponentName = \"[connect #\" + ++connectCalls + \"]\";\n var log;\n try {\n log = new Log('default', logComponentName, logLevels, loggerName);\n }\n catch (error) {\n return CancelablePromise.reject(error);\n }\n // NOTE(csantos): Log a warning for the deprecated ConnectOptions properties.\n // The warning is displayed only for the first call to connect() per browser session.\n // Additionally, the options that are no longer needed will be removed.\n deprecateOptions(options, log, deprecatedConnectOptionsProps);\n var adaptiveSimulcast = options.preferredVideoCodecs === 'auto';\n if (adaptiveSimulcast) {\n // NOTE(mpatwardhan): enable adaptiveSimulcast.\n options.preferredVideoCodecs = [{ codec: 'VP8', simulcast: true, adaptiveSimulcast: true }];\n }\n if (options.maxVideoBitrate && adaptiveSimulcast) {\n log.error('ConnectOptions \"maxVideoBitrate\" is not compatible with \"preferredVideoCodecs=auto\"');\n return CancelablePromise.reject(E.ILLEGAL_INVOKE('connect', 'ConnectOptions \"maxVideoBitrate\" is not compatible with \"preferredVideoCodecs=auto\"'));\n }\n options = Object.assign({\n automaticSubscription: true,\n dominantSpeaker: false,\n enableDscp: false,\n environment: DEFAULT_ENVIRONMENT,\n eventListener: null,\n insights: true,\n LocalAudioTrack: LocalAudioTrack,\n LocalDataTrack: LocalDataTrack,\n LocalParticipant: LocalParticipant,\n LocalVideoTrack: LocalVideoTrack,\n Log: Log,\n MediaStreamTrack: MediaStreamTrack,\n loggerName: loggerName,\n logLevel: logLevel,\n maxAudioBitrate: null,\n maxVideoBitrate: null,\n name: null,\n networkMonitor: true,\n networkQuality: false,\n preferredAudioCodecs: [],\n preferredVideoCodecs: [],\n realm: DEFAULT_REALM,\n region: DEFAULT_REGION,\n signaling: SignalingV2\n }, filterObject(options));\n /* eslint new-cap:0 */\n var eventPublisherOptions = {};\n if (typeof options.wsServerInsights === 'string') {\n eventPublisherOptions.gateway = options.wsServerInsights;\n }\n var EventPublisher = options.insights ? InsightsPublisher : NullInsightsPublisher;\n var eventPublisher = new EventPublisher(token, SDK_NAME, SDK_VERSION, options.environment, options.realm, eventPublisherOptions);\n var wsServer = WS_SERVER(options.environment, options.region);\n var eventObserver = new EventObserver(eventPublisher, Date.now(), log, options.eventListener);\n options = Object.assign({ eventObserver: eventObserver, wsServer: wsServer }, options);\n options.log = log;\n // NOTE(mroberts): Print the Safari warning once if the log-level is at least\n // \"warn\", i.e. neither \"error\" nor \"off\".\n // NOTE(mmalavalli): Print the Safari warning only for versions 12.0 and below.\n if (isSafariWithoutVP8Support\n && !didPrintSafariWarning\n && (log.logLevel !== 'error' && log.logLevel !== 'off')) {\n didPrintSafariWarning = true;\n log.warn([\n 'Support for Safari 12.0 and below is limited because it does not support VP8.',\n 'This means you may experience codec issues in Group Rooms. You may also',\n 'experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or',\n 'iOS-based Participants who do not support H.264. However, P2P Rooms',\n 'with browser-based Participants should work. For more information, please',\n 'refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11'\n ].join(' '));\n }\n if (typeof token !== 'string') {\n return CancelablePromise.reject(E.INVALID_TYPE('token', 'string'));\n }\n // NOTE(mmalavalli): The Room \"name\" in \"options\" was being used\n // as the LocalTrack name in asLocalTrack(). So we pass a copy of\n // \"options\" without the \"name\".\n var localTrackOptions = Object.assign({}, options);\n delete localTrackOptions.name;\n if ('tracks' in options) {\n if (!Array.isArray(options.tracks)) {\n return CancelablePromise.reject(E.INVALID_TYPE('options.tracks', 'Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack'));\n }\n try {\n options.tracks = options.tracks.map(function (track) { return asLocalTrack(track, localTrackOptions); });\n }\n catch (error) {\n return CancelablePromise.reject(error);\n }\n }\n var error = validateBandwidthProfile(options.bandwidthProfile);\n if (error) {\n return CancelablePromise.reject(error);\n }\n // Note(mpatwardhan): \"clientTrackSwitchOffControl\" allows tracks to be switched off\n // and \"contentPreferencesMode\" allows track dimensions to be specified dynamically.\n // The properties can have one of the three values internally:\n // 1) \"auto\" = sdk will decide and send the hints.\n // 2) \"manual\" - app can use api to send the hints.\n // 3) \"disabled\" = do not enable this feature. (this is internal only value)\n // 'disabled' is needed because clientTrackSwitchOffControl and contentPreferencesMode are incompatible with\n // deprecated properties maxTracks and renderDimensions respectively. once we make @breaking_version_change\n // we can remove 'disabled' state along with maxTracks and renderDimensions.\n options.clientTrackSwitchOffControl = 'disabled'; // should sdk turn off idle tracks automatically?\n options.contentPreferencesMode = 'disabled'; // should sdk use video element dimensions for content hints?\n if (options.bandwidthProfile) {\n options.clientTrackSwitchOffControl = 'auto';\n options.contentPreferencesMode = 'auto';\n if (options.bandwidthProfile.video) {\n // log any warnings about deprecated bwp options\n deprecateOptions(options.bandwidthProfile.video, log, deprecatedBandwidthProfileOptions);\n if ('maxTracks' in options.bandwidthProfile.video) {\n // when deprecated maxTracks is specified. disable clientTrackSwitchOffControl\n options.clientTrackSwitchOffControl = 'disabled';\n }\n else if (options.bandwidthProfile.video.clientTrackSwitchOffControl === 'manual') {\n options.clientTrackSwitchOffControl = 'manual';\n }\n else {\n options.clientTrackSwitchOffControl = 'auto';\n }\n if ('renderDimensions' in options.bandwidthProfile.video) {\n options.contentPreferencesMode = 'disabled';\n }\n else if (options.bandwidthProfile.video.contentPreferencesMode === 'manual') {\n options.contentPreferencesMode = 'manual';\n }\n else {\n options.contentPreferencesMode = 'auto';\n }\n }\n }\n var Signaling = options.signaling;\n var signaling = new Signaling(options.wsServer, options);\n log.info('Connecting to a Room');\n log.debug('Options:', options);\n var encodingParameters = new EncodingParametersImpl({\n maxAudioBitrate: options.maxAudioBitrate,\n maxVideoBitrate: options.maxVideoBitrate\n }, adaptiveSimulcast);\n var preferredCodecs = {\n audio: options.preferredAudioCodecs.map(normalizeCodecSettings),\n video: options.preferredVideoCodecs.map(normalizeCodecSettings)\n };\n var networkQualityConfiguration = new NetworkQualityConfigurationImpl(isNonArrayObject(options.networkQuality) ? options.networkQuality : {});\n // Log warnings for any unsupported preferred codecs.\n ['audio', 'video'].forEach(function (kind) { return preferredCodecs[kind].forEach(function (_a) {\n var codec = _a.codec;\n return isCodecSupported(codec, kind).then(function (isSupported) { return !isSupported && log.warn(\"The preferred \" + kind + \" codec \\\"\" + codec + \"\\\" will be ignored as it is not supported by the browser.\"); });\n }); });\n // Create a CancelableRoomPromise that resolves after these steps:\n // 1 - Get the LocalTracks.\n // 2 - Create the LocalParticipant using options.tracks.\n // 3 - Connect to rtc-room-service and create the RoomSignaling.\n // 4 - Create the Room and then resolve the CancelablePromise.\n var cancelableRoomPromise = createCancelableRoomPromise(getLocalTracks.bind(null, options), createLocalParticipant.bind(null, signaling, log, encodingParameters, networkQualityConfiguration, options), createRoomSignaling.bind(null, token, options, signaling, encodingParameters, preferredCodecs), createRoom.bind(null, options));\n cancelableRoomPromise.then(function (room) {\n eventPublisher.connect(room.sid, room.localParticipant.sid);\n log.info('Connected to Room:', room.toString());\n log.info('Room name:', room.name);\n log.debug('Room:', room);\n room.once('disconnected', function () { return eventPublisher.disconnect(); });\n return room;\n }, function (error) {\n eventPublisher.disconnect();\n if (cancelableRoomPromise._isCanceled) {\n log.info('Attempt to connect to a Room was canceled');\n }\n else {\n log.info('Error while connecting to a Room:', error);\n }\n });\n return cancelableRoomPromise;\n}\n/**\n * You may pass these options to {@link connect} in order to override the\n * default behavior.\n * @typedef {object} ConnectOptions\n * @property {boolean|CreateLocalTracksOptions|CreateLocalAudioTrackOptions} [audio=true] - Whether or not to\n * get local audio with getUserMedia when tracks\n * are not provided.\n * @property {boolean} [automaticSubscription=true] - By default, you will subscribe\n * to all RemoteTracks shared by other Participants in a Room. You can now override this\n * behavior by setting this flag to false. It will make sure that you will\n * not subscribe to any RemoteTrack in a Group or Small Group Room. Setting it to\n * true, or not setting it at all preserves the default behavior. This\n * flag does not have any effect in a Peer-to-Peer Room.\n * @property {BandwidthProfileOptions} [bandwidthProfile] - You can optionally configure\n * how your available downlink bandwidth is shared among the RemoteTracks you have subscribed\n * to in a Group Room. By default, bandwidth is shared equally among the RemoteTracks.\n * This has no effect in Peer-to-Peer Rooms.\n * @property {boolean} [dominantSpeaker=false] - Whether to enable the Dominant\n * Speaker API or not. This only takes effect in Group Rooms.\n * @property {boolean} [dscpTagging=false] - (deprecated: use \"enableDscp\" instead)\n * DSCP tagging allows you to request enhanced QoS treatment for RTP media packets from any\n * firewall that the client may be behind. Setting this option to true will\n * request DSCP tagging for media packets on supported browsers (only Chrome supports this\n * as of now). Audio packets will be sent with DSCP header value set to 0xb8 which corresponds\n * to Expedited Forwarding (EF). Video packets will be sent with DSCP header value set to 0x88\n * which corresponds to Assured Forwarding (AF41).\n * @property {boolean} [enableDscp=false] - DSCP tagging allows you to request enhanced\n * QoS treatment for RTP media packets from any firewall that the client may be behind.\n * Setting this option to true will request DSCP tagging for media packets\n * on supported browsers (only Chrome supports this as of now). Audio packets will be\n * sent with DSCP header value set to 0xb8 which corresponds to Expedited Forwarding (EF).\n * Video packets will be sent with DSCP header value set to 0x88 which corresponds to\n * Assured Forwarding (AF41).\n * @property {EventListener} [eventListener] - (deprecated: use [Video.Logger](module-twilio-video.html)\n * you can listen to fine-grained events related to signaling and media that are\n * not available in the public APIs. These events might be useful for your own reporting\n * and diagnostics.\n * @property {Array} iceServers - Override the STUN and TURN\n * servers used when connecting to {@link Room}s\n * @property {RTCIceTransportPolicy} [iceTransportPolicy=\"all\"] - Override the\n * ICE transport policy to be one of \"relay\" or \"all\"\n * @property {boolean} [insights=true] - Whether publishing events\n * to the Insights gateway is enabled or not\n * @property {?number} [maxAudioBitrate=null] - Max outgoing audio bitrate (bps);\n * A null or a 0 value does not set any bitrate limit;\n * This value is set as a hint for variable bitrate codecs, but will not take\n * effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari\n * support a bitrate range of 12000 bps to 256000 bps for Opus codec; This parameter\n * has no effect on iSAC, PCMU and PCMA codecs\n * @property {?number} [maxVideoBitrate=null] - Max outgoing video bitrate (bps);\n * A null or 0 value does not set any bitrate limit;\n * This value is set as a hint for variable bitrate codecs, but will not take\n * effect for fixed bitrate codecs; Based on our tests, Chrome, Firefox and Safari\n * all seem to support an average bitrate range of 20000 bps (20 kbps) to\n * 8000000 bps (8 mbps) for a 720p VideoTrack\n * This parameter must not be set when when preferredVideoCodecs is set to `auto`.\n * @property {?string} [name=null] - Set to connect to a {@link Room} by name\n * @property {boolean|NetworkQualityConfiguration} [networkQuality=false] - Whether to enable the Network\n * Quality API or not. This only takes effect in Group Rooms. Pass a {@link NetworkQualityConfiguration}\n * to configure verbosity levels for network quality information for {@link LocalParticipant}\n * and {@link RemoteParticipant}s. A true value will set the {@link NetworkQualityVerbosity}\n * for the {@link LocalParticipant} to {@link NetworkQualityVerbosity}#minimal\n * and the {@link NetworkQualityVerbosity} for {@link RemoteParticipant}s to\n * {@link NetworkQualityVerbosity}#none.\n * @property {Array} [notifyWarnings=[]] - The SDK raises warning events when it\n * detects certain conditions. You can implement callbacks on these events to act on them, or to alert\n * the user of an issue. Subsequently, \"warningsCleared\" event is raised when conditions have returned\n * to normal. You can listen to these events by specifying an array of warning. By default,\n * this array is empty and no warning events will be raised.\n * Possible values include recording-media-lost, which is raised when the media server\n * has not detected any media on the published track that is being recorded in the past 30 seconds.\n * This usually happens when there are network interruptions or when the track has stopped.\n * This warning is raised by {@link LocalTrackPublication}, {@link LocalParticipant}, and {@link Room} object.\n * @property {string} [region='gll'] - Preferred signaling region; By default, you will be connected to the\n * nearest signaling server determined by latency based routing. Setting a value other\n * than gll bypasses routing and guarantees that signaling traffic will be\n * terminated in the region that you prefer. Please refer to this table\n * for the list of supported signaling regions.\n * @property {Array} [preferredAudioCodecs=[]] - Preferred audio codecs;\n * An empty array preserves the current audio codec preference order.\n * @property {Array|VideoEncodingMode} [preferredVideoCodecs=[]] -\n * Preferred video codecs; when set to 'VideoEncodingMode.Auto', SDK manages the video codec,\n * by preferring VP8 simulcast in group rooms. It also enables adaptive simulcast, which allows SDK\n * to turn off simulcast layers that are not needed for efficient bandwidth and CPU usage.\n * An empty array preserves the current video codec.\n * preference order. If you want to set a preferred video codec on a Group Room,\n * you will need to create the Room using the REST API and set the\n * VideoCodecs property.\n * See \n * here for more information.\n * @property {LogLevel|LogLevels} [logLevel='warn'] - (deprecated: use [Video.Logger](module-twilio-video.html) instead.\n * See [examples](module-twilio-video.html#.connect) for details)\n * Set the default log verbosity\n * of logging. Passing a {@link LogLevel} string will use the same\n * level for all components. Pass a {@link LogLevels} to set specific log\n * levels.\n * @property {string} [loggerName='twilio-video'] - The name of the logger. Use this name when accessing the logger used by the SDK.\n * See [examples](module-twilio-video.html#.connect) for details.\n * @property {Array} [tracks] - The\n * {@link LocalTrack}s or MediaStreamTracks with which to join the\n * {@link Room}. These tracks can be obtained either by calling\n * {@link createLocalTracks}, or by constructing them from the MediaStream\n * obtained by calling getUserMedia().\n * @property {boolean|CreateLocalTrackOptions} [video=true] - Whether or not to\n * get local video with getUserMedia when tracks\n * are not provided.\n */\n/**\n * {@link BandwidthProfileOptions} allows you to configure how your available downlink\n * bandwidth is shared among the RemoteTracks you have subscribed to in a Group Room.\n * @typedef {object} BandwidthProfileOptions\n * @property {VideoBandwidthProfileOptions} [video] - Optional parameter to configure\n * how your available downlink bandwidth is shared among the {@link RemoteVideoTrack}s you\n * have subscribed to in a Group Room.\n */\n/**\n * {@link VideoBandwidthProfileOptions} allows you to configure how your available downlink\n * bandwidth is shared among the {@link RemoteVideoTrack}s you have subscribed to in a Group Room.\n * @typedef {object} VideoBandwidthProfileOptions\n * @property {Track.Priority} [dominantSpeakerPriority=\"standard\"] - Optional parameter to\n * specify the minimum subscribe {@link Track.Priority} of the Dominant Speaker's {@link RemoteVideoTrack}s.\n * This means that the Dominant Speaker's {@link RemoteVideoTrack}s that are published with\n * lower {@link Track.Priority} will be subscribed to with the {@link Track.Priority} specified here.\n * This has no effect on {@link RemoteVideoTrack}s published with higher {@link Track.Priority}, which will\n * still be subscribed to with with the same {@link Track.Priority}. If not specified, this defaults to \"standard\".\n * This parameter only applies to a Group Room Participant when {@link ConnectOptions}.dominantSpeaker is set to true.\n * @property {number} [maxSubscriptionBitrate] - Optional parameter to specify the maximum\n * downlink video bandwidth in bits per second (bps). By default, there are no limits on\n * the downlink video bandwidth.\n * @property {ClientTrackSwitchOffControl} [clientTrackSwitchOffControl=\"auto\"] - Optional parameter that determines\n * when to turn the {@link RemoteVideoTrack} on or off. When set to \"auto\", SDK will use the visibility of the\n * attached elements to determine if the {@link RemoteVideoTrack} should be turned off or on. When the attached video elements become invisible the {@link RemoteVideoTrack} will\n * be turned off, and when elements become visible they will be turned on. When set to \"manual\" you can turn the {@link RemoteVideoTrack}\n * on and off using the api {@link RemoteVideoTrack#switchOn} and {@link RemoteVideoTrack#switchOff} respectively.\n * @property {VideoContentPreferencesMode} [contentPreferencesMode=\"auto\"] - This Optional parameter configures\n * the mode for specifying content preferences for the {@link RemoteVideoTrack}. When set to \"auto\" the\n * SDK determines the render dimensions by inspecting the attached video elements. {@link RemoteVideoTrack}s rendered in smaller video elements\n * will receive a lower resolution stream compared to the video rendered in larger video elements. When set to \"manual\" you can set\n * the dimensions programmatically by calling {@link RemoteVideoTrack#setContentPreferences}.\n * @property {number} [maxTracks] - (deprecated: use \"clientTrackSwitchOffControl\" instead). Optional\n * parameter to specify the maximum number of visible {@link RemoteVideoTrack}s, which will be selected based on\n * {@link Track.Priority} and an N-Loudest policy. By default there are no limits on the number of visible {@link RemoteVideoTrack}s.\n * 0 or a negative value will remove any limit on the maximum number of visible {@link RemoteVideoTrack}s.\n * @property {BandwidthProfileMode} [mode=\"grid\"] - Optional parameter to specify how the {@link RemoteVideoTrack}s'\n * TrackPriority values are mapped to bandwidth allocation in Group Rooms. This defaults to \"grid\",\n * which results in equal bandwidth share allocation to all {@link RemoteVideoTrack}s.\n * @property {VideoRenderDimensions} [renderDimensions] - (deprecated: use \"contentPreferencesMode\" instead). Optional\n * parameter to specify the desired render dimensions of {@link RemoteVideoTrack}s.\n * @property {TrackSwitchOffMode} [trackSwitchOffMode=\"predicted\"] - Optional parameter to configure\n * how {@link RemoteVideoTrack}s are switched off in response to bandwidth pressure. Defaults to \"predicted\".\n */\n/**\n * @deprecated\n * {@link VideoRenderDimensions} allows you to specify the desired render dimensions of {@link RemoteVideoTrack}s.\n * You can specify 'auto' for this field - which is also default value - based on {@link Track.Priority}. The bandwidth allocation algorithm will distribute the available downlink bandwidth\n * proportional to the requested render dimensions. This is just an input for calculating the bandwidth to be allocated\n * and does not affect the actual resolution of the {@link RemoteVideoTrack}s.\n * @typedef {object} VideoRenderDimensions\n * @property {VideoTrack.Dimensions} [high] - Optional parameter to specify the desired rendering dimensions of\n * {@link RemoteVideoTrack} whose {@link Track.Priority} is \"high\". 0 or a negative value will result in the lowest\n * possible resolution. This defaults to 1280 x 720 (HD).\n * @property {VideoTrack.Dimensions} [low] - Optional parameter to specify the desired rendering dimensions of\n * {@link RemoteVideoTrack} whose {@link Track.Priority} is \"low\". 0 or a negative value will result in the lowest\n * possible resolution. This defaults to 176 x 144 (QCIF).\n * @property {VideoTrack.Dimensions} [standard] - Optional parameter to specify the desired rendering dimensions of\n * {@link RemoteVideoTrack} whose {@link Track.Priority} is \"standard\". 0 or a negative value will result in the lowest\n * possible resolution. This defaults to 640 x 480 (VGA).\n */\n/**\n * Configure verbosity levels for network quality information for\n * {@link LocalParticipant} and {@link RemoteParticipant}s.\n * @typedef {object} NetworkQualityConfiguration\n * @property {NetworkQualityVerbosity} [local=1] - Verbosity level for {@link LocalParticipant}\n * @property {NetworkQualityVerbosity} [remote=0] - Verbosity level for {@link RemoteParticipant}s\n */\n/**\n * You may pass these levels to {@link ConnectOptions} to override\n * log levels for individual components.\n * @typedef {object} LogLevels\n * @property {LogLevel} [default='warn'] - Log level for 'default' modules.\n * @property {LogLevel} [media='warn'] - Log level for 'media' modules.\n * @property {LogLevel} [signaling='warn'] - Log level for 'signaling' modules.\n * @property {LogLevel} [webrtc='warn'] - Log level for 'webrtc' modules.\n */\n/**\n * Audio codec settings.\n * @typedef {object} AudioCodecSettings\n * @property {AudioCodec} codec - Audio codec name\n */\n/**\n * Opus codec settings.\n * @typedef {AudioCodecSettings} OpusCodecSettings\n * @property {AudioCodec} name - \"opus\"\n * @property {boolean} [dtx=true] - Enable/disable discontinuous transmission (DTX);\n * If enabled all published {@link LocalAudioTrack}s will reduce the outgoing bitrate\n * to near-zero whenever speech is not detected, resulting in bandwidth and CPU savings;\n * It defaults to true.\n */\n/**\n * Video codec settings.\n * @typedef {object} VideoCodecSettings\n * @property {VideoCodec} codec - Video codec name\n */\n/**\n * VP8 codec settings.\n * @typedef {VideoCodecSettings} VP8CodecSettings\n * @property {VideoCodec} name - \"VP8\"\n * @property {boolean} [simulcast=false] - Enable/disable VP8 simulcast; If\n * enabled, Twilio's Video SDK will send three video streams of different\n * qualities\n */\n/**\n * Names of the supported audio codecs.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar AudioCodec = {\n isac: 'isac',\n opus: 'opus',\n PCMA: 'PCMA',\n PCMU: 'PCMU'\n};\n/**\n * Names of the supported VideoEncodingMode.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoEncodingMode = {\n Auto: 'auto',\n};\n/**\n * Names of the supported video codecs.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoCodec = {\n H264: 'H264',\n VP8: 'VP8'\n};\n// VP9 is supported by most browsers, but backend doesn't at the moment.\n// Hide it from public documentation until then.\nVideoCodec.VP9 = 'VP9';\n/**\n * Levels for logging verbosity.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar LogLevel = {\n debug: 'debug',\n info: 'info',\n warn: 'warn',\n error: 'error',\n off: 'off'\n};\n/**\n * The verbosity level of network quality information of a {@link Participant}.\n * @enum {number}\n */\n// eslint-disable-next-line\nvar NetworkQualityVerbosity = {\n /**\n * Nothing is reported for the {@link Participant}. This has no effect and\n * defaults to {@link NetworkQualityVerbosity}#minimal\n * for the {@link LocalParticipant}.\n */\n none: 0,\n /**\n * Reports {@link NetworkQualityLevel} for the {@link Participant}.\n */\n minimal: 1,\n /**\n * Reports {@link NetworkQualityLevel} and {@link NetworkQualityStats} for the {@link Participant}.\n * {@link NetworkQualityStats} is populated with audio and video {@link NetworkQualityLevel}s\n * based on which the {@link Participant}'s {@link NetworkQualityLevel} is calculated.\n */\n moderate: 2,\n /**\n * Reports {@link NetworkQualityLevel} and {@link NetworkQualityStats} for the {@link Participant}.\n * {@link NetworkQualityStats} is populated with audio and Video {@link NetworkQualityLevel}s\n * and their corresponding {@link NetworkQualityMediaStats} based on which the\n * {@link Participant}'s {@link NetworkQualityLevel} is calculated.\n */\n detailed: 3\n};\n/**\n * {@link TrackSwitchOffMode} specifies when {@link RemoteVideoTrack}s' are switched off.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar TrackSwitchOffMode = {\n /**\n * In this mode, {@link RemoteVideoTrack}s are switched off only when network congestion\n * is detected.\n */\n detected: 'detected',\n /**\n * In this mode, {@link RemoteVideoTrack}s are pro-actively switched off when network\n * congestion is predicted by the bandwidth estimation mechanism.\n */\n predicted: 'predicted',\n /**\n * In this mode, {@link RemoteVideoTrack}s are not switched off. Instead in response to network\n * congestion, tracks will be adjusted to lower quality.\n */\n disabled: 'disabled'\n};\n/**\n * {@link BandwidthProfileMode} specifies how {@link RemoteVideoTrack}s' {@link Track.Priority} values\n * are mapped to bandwidth allocation in Group Rooms.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar BandwidthProfileMode = {\n /**\n * This mode is for use cases where all the subscribed {@link RemoteVideoTrack}s are\n * equally important. The bandwidth allocation algorithm will share the available\n * downlink bandwidth equally among the subscribed {@link RemoteVideoTrack}s, irrespective\n * of their {@link Track.Priority}. In case of insufficient downlink bandwidth, the lower\n * priority {@link RemoteVideoTrack}s are switched off.\n */\n grid: 'grid',\n /**\n * This mode is for use cases where some {@link RemoteVideoTrack}s are prioritized more than\n * others. However, the lower priority {@link RemoteVideoTrack}s still need to be visible.\n * The bandwidth allocation algorithm will share the available downlink bandwidth proportional\n * to the requested {@link VideoRenderDimensions} corresponding to their {@link Track.Priority}.\n * In case of insufficient downlink bandwidth, the quality of higher priority {@link RemoteVideoTrack}s\n * may be degraded to avoid switching off lower priority {@link RemoteVideoTrack}s.\n */\n collaboration: 'collaboration',\n /**\n * This mode is for use cases where some {@link RemoteVideoTrack}s are deemed critical and must\n * be preserved at any cost over the other {@link RemoteVideoTrack}s. The bandwidth allocation\n * algorithm will allocate as big a share of the available downlink bandwidth as it possibly\n * can to the higher priority {@link RemoteVideoTrack}s, and only then consider the lower priority\n * {@link RemoteVideoTrack}s. In case of insufficient downlink bandwidth, the lower priority\n * {@link RemoteVideoTrack}s are switched off in order to preserve the quality of the higher\n * priority {@link RemoteVideoTrack}s.\n */\n presentation: 'presentation'\n};\n/**\n * {@link VideoContentPreferencesMode} specifies how {@link RemoteVideoTrack}s' render dimensions are\n * decided by the SDK.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar VideoContentPreferencesMode = {\n /**\n * when set to auto, SDK uses the sizes of the video elements attached to the to the {@link RemoteVideoTrack} dynamically to\n * decide the render dimensions. {@link RemoteVideoTrack}s rendered in smaller video elements will be given smaller bandwidth allocation\n * compared to the tracks rendered in large video elements.\n */\n auto: 'auto',\n /**\n * When set to manual, application can use {@link RemoteVideoTrack#setContentPreference} to set the\n * desired render dimensions for the {@link RemoteVideoTrack}.\n */\n manual: 'manual'\n};\n/**\n * {@link ClientTrackSwitchOffControl} specifies how {@link RemoteVideoTrack}s' turned on and off\n * @enum {string}\n */\n// eslint-disable-next-line\nvar ClientTrackSwitchOffControl = {\n /**\n * when set to auto, SDK uses the visibility of the video elements attached to the to the {@link RemoteVideoTrack} to decide.\n * on turning tracks on or off. The track that are not attached to any video elements or not visible on the screen will be turned\n * off automatically.\n */\n auto: 'auto',\n /**\n * When set to manual, application can use {@link RemoteVideoTrack}s switchOff and switchOn apis to control turn the track on or off.\n */\n manual: 'manual'\n};\n/**\n * Names of the supported levels for {@link EventListenerEvent}s.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar EventListenerLevel = {\n debug: 'debug',\n error: 'error',\n info: 'info',\n warning: 'warning'\n};\n/**\n * Names of the supported groups for {@link EventListenerEvent}s.\n * @enum {string}\n */\n// eslint-disable-next-line\nvar EventListenerGroup = {\n /**\n * Events associated with the connection to Twilio's signaling server\n */\n signaling: 'signaling'\n};\n/**\n * An {@link EventListener} allows you to listen to fine-grained {@link EventListenerEvent}s related\n * to signaling and media that are not available in the public APIs, which might be useful for your own\n * reporting and diagnostics.\n * @typedef {EventEmitter} EventListener\n * @example\n * const { EventEmitter } = require('events');\n * const { connect } = require('twilio-video');\n *\n * const eventListener = new EventEmitter();\n * eventListener.on('event', function(event) {\n * console.log('The SDK raised an event:', event);\n * });\n *\n * connect('token', {\n * eventListener: eventListener\n * });\n */\n/**\n * The SDK raised an {@link EventListenerEvent}.\n * @event EventListener#event\n * @param {EventListenerEvent} event - Context about the event raised by the SDK.\n * This can be one of the following:\n * * {@link EventListenerClosedEvent}\n * * {@link EventListenerConnectingEvent}\n * * {@link EventListenerEarlyEvent}\n * * {@link EventListenerOpenEvent}\n * * {@link EventListenerWaitingEvent}\n */\n/**\n * An {@link EventListenerEvent} provides context about an event raised by the SDK on the\n * {@link EventListener}. Apart from the properties listed here, it may also include some\n * event-specific data within an optional \"payload\" property. The different types of\n * {@link EventListenerEvent}s are listed below:\n * * {@link EventListenerClosedEvent}\n * * {@link EventListenerConnectingEvent}\n * * {@link EventListenerEarlyEvent}\n * * {@link EventListenerOpenEvent}\n * * {@link EventListenerWaitingEvent}\n * @typedef {object} EventListenerEvent\n * @property {number} elapsedTime - The time elapsed in milliseconds since connect() was called\n * @property {EventListenerGroup} group - The group under which the event is classified\n * @property {EventListenerLevel} level - The verbosity level of the event, which can be one of \"debug\", \"error\", \"info\", \"warning\"\n * @property {string} name - The name of the event\n * @property {*} [payload] - Optional event-specific data\n * @property {number} timestamp - The time in milliseconds relative to the Unix Epoch when the event was raised\n */\n/**\n * The connection to Twilio's signaling server was closed.\n * @typedef {EventListenerEvent} EventListenerClosedEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level - 'info' if the connection was closed by the client, 'error' otherwise\n * @property {string} name='closed'\n * @property {{reason: string}} payload - Reason for the connection being closed. It can be one of\n * 'busy', 'failed', 'local', 'remote' or 'timeout'\n */\n/**\n * The SDK is connecting to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerConnectingEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='connecting'\n */\n/**\n * The SDK is about to connect to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerEarlyEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='early'\n */\n/**\n * The SDK has established a signaling connection to Twilio's signaling server.\n * @typedef {EventListenerEvent} EventListenerOpenEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='info'\n * @property {string} name='open'\n */\n/**\n * The SDK is waiting to retry connecting th Twilio's signaling server. This can\n * happen if the server is busy with too many connection requests.\n * @typedef {EventListenerEvent} EventListenerWaitingEvent\n * @property {EventListenerGroup} group='signaling'\n * @property {EventListenerLevel} level='warning'\n * @property {string} name='waiting'\n */\nfunction deprecateOptions(options, log, deprecationTable) {\n deprecationTable.forEach(function (prop) {\n var didWarn = prop.didWarn, name = prop.name, newName = prop.newName, shouldDelete = prop.shouldDelete;\n if (name in options && typeof options[name] !== 'undefined') {\n if (newName && shouldDelete) {\n options[newName] = options[name];\n }\n if (shouldDelete) {\n delete options[name];\n }\n if (!didWarn && !['error', 'off'].includes(log.level)) {\n log.warn(\"The ConnectOptions \\\"\" + name + \"\\\" is \" + (newName\n ? \"deprecated and scheduled for removal. Please use \\\"\" + newName + \"\\\" instead.\"\n : 'no longer applicable and will be ignored.'));\n prop.didWarn = true;\n }\n }\n });\n}\nfunction createLocalParticipant(signaling, log, encodingParameters, networkQualityConfiguration, options, localTracks) {\n var localParticipantSignaling = signaling.createLocalParticipantSignaling(encodingParameters, networkQualityConfiguration);\n log.debug('Creating a new LocalParticipant:', localParticipantSignaling);\n return new options.LocalParticipant(localParticipantSignaling, localTracks, options);\n}\nfunction createRoom(options, localParticipant, roomSignaling) {\n var room = new Room(localParticipant, roomSignaling, options);\n var log = options.log;\n log.debug('Creating a new Room:', room);\n roomSignaling.on('stateChanged', function stateChanged(state) {\n if (state === 'disconnected') {\n log.info('Disconnected from Room:', room.toString());\n roomSignaling.removeListener('stateChanged', stateChanged);\n }\n });\n return room;\n}\nfunction createRoomSignaling(token, options, signaling, encodingParameters, preferredCodecs, localParticipant) {\n options.log.debug('Creating a new RoomSignaling');\n return signaling.connect(localParticipant._signaling, token, encodingParameters, preferredCodecs, options);\n}\nfunction getLocalTracks(options, handleLocalTracks) {\n var log = options.log;\n options.shouldStopLocalTracks = !options.tracks;\n if (options.shouldStopLocalTracks) {\n log.info('LocalTracks were not provided, so they will be acquired '\n + 'automatically before connecting to the Room. LocalTracks will '\n + 'be released if connecting to the Room fails or if the Room '\n + 'is disconnected');\n }\n else {\n log.info('Getting LocalTracks');\n log.debug('Options:', options);\n }\n return options.createLocalTracks(options).then(function getLocalTracksSucceeded(localTracks) {\n var promise = handleLocalTracks(localTracks);\n promise.catch(function handleLocalTracksFailed() {\n if (options.shouldStopLocalTracks) {\n log.info('The automatically acquired LocalTracks will now be stopped');\n localTracks.forEach(function (track) {\n track.stop();\n });\n }\n });\n return promise;\n });\n}\nfunction normalizeCodecSettings(nameOrSettings) {\n var settings = typeof nameOrSettings === 'string'\n ? { codec: nameOrSettings }\n : nameOrSettings;\n switch (settings.codec.toLowerCase()) {\n case 'opus': {\n return Object.assign({ dtx: true }, settings);\n }\n case 'vp8': {\n return Object.assign({ simulcast: false }, settings);\n }\n default: {\n return settings;\n }\n }\n}\nmodule.exports = connect;\n//# sourceMappingURL=connect.js.map","'use strict';\nvar CancelablePromise = require('./util/cancelablepromise');\n/**\n * Create a {@link CancelablePromise}.\n * @param {function(function(Array): CancelablePromise):\n * Promise>} getLocalTracks\n * @param {function(Array): LocalParticipant} createLocalParticipant\n * @param {function(Array): CancelablePromise} createRoomSignaling\n * @param {function(LocalParticipant, RoomSignaling): Room} createRoom\n * @returns CancelablePromise\n */\nfunction createCancelableRoomPromise(getLocalTracks, createLocalParticipant, createRoomSignaling, createRoom) {\n var cancelableRoomSignalingPromise;\n var cancellationError = new Error('Canceled');\n return new CancelablePromise(function onCreate(resolve, reject, isCanceled) {\n var localParticipant;\n getLocalTracks(function getLocalTracksSucceeded(localTracks) {\n if (isCanceled()) {\n return CancelablePromise.reject(cancellationError);\n }\n localParticipant = createLocalParticipant(localTracks);\n return createRoomSignaling(localParticipant).then(function createRoomSignalingSucceeded(getCancelableRoomSignalingPromise) {\n if (isCanceled()) {\n throw cancellationError;\n }\n cancelableRoomSignalingPromise = getCancelableRoomSignalingPromise();\n return cancelableRoomSignalingPromise;\n });\n }).then(function roomSignalingConnected(roomSignaling) {\n if (isCanceled()) {\n roomSignaling.disconnect();\n throw cancellationError;\n }\n resolve(createRoom(localParticipant, roomSignaling));\n }).catch(function onError(error) {\n reject(error);\n });\n }, function onCancel() {\n if (cancelableRoomSignalingPromise) {\n cancelableRoomSignalingPromise.cancel();\n }\n });\n}\nmodule.exports = createCancelableRoomPromise;\n//# sourceMappingURL=cancelableroompromise.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * {@link EncodingParametersImpl} represents an object which notifies its\n * listeners of any changes in the values of its properties.\n * @extends EventEmitter\n * @implements EncodingParameters\n * @emits EncodingParametersImpl#changed\n * @property {?number} maxAudioBitrate\n * @property {?number} maxVideoBitrate\n */\nvar EncodingParametersImpl = /** @class */ (function (_super) {\n __extends(EncodingParametersImpl, _super);\n /**\n * Construct an {@link EncodingParametersImpl}.\n * @param {EncodingParamters} encodingParameters - Initial {@link EncodingParameters}\n * @param {Boolean} adaptiveSimulcast - true if adaptive simulcast was enabled by connect options.\n */\n function EncodingParametersImpl(encodingParameters, adaptiveSimulcast) {\n var _this = _super.call(this) || this;\n encodingParameters = Object.assign({\n maxAudioBitrate: null,\n maxVideoBitrate: null\n }, encodingParameters);\n Object.defineProperties(_this, {\n maxAudioBitrate: {\n value: encodingParameters.maxAudioBitrate,\n writable: true\n },\n maxVideoBitrate: {\n value: encodingParameters.maxVideoBitrate,\n writable: true\n },\n adaptiveSimulcast: {\n value: adaptiveSimulcast\n }\n });\n return _this;\n }\n /**\n * Returns the bitrate values in an {@link EncodingParameters}.\n * @returns {EncodingParameters}\n */\n EncodingParametersImpl.prototype.toJSON = function () {\n return {\n maxAudioBitrate: this.maxAudioBitrate,\n maxVideoBitrate: this.maxVideoBitrate\n };\n };\n /**\n * Update the bitrate values with those in the given {@link EncodingParameters}.\n * @param {EncodingParameters} encodingParameters - The new {@link EncodingParameters}\n * @fires EncodingParametersImpl#changed\n */\n EncodingParametersImpl.prototype.update = function (encodingParameters) {\n var _this = this;\n encodingParameters = Object.assign({\n maxAudioBitrate: this.maxAudioBitrate,\n maxVideoBitrate: this.maxVideoBitrate\n }, encodingParameters);\n var shouldEmitChanged = [\n 'maxAudioBitrate',\n 'maxVideoBitrate'\n ].reduce(function (shouldEmitChanged, maxKindBitrate) {\n if (_this[maxKindBitrate] !== encodingParameters[maxKindBitrate]) {\n _this[maxKindBitrate] = encodingParameters[maxKindBitrate];\n shouldEmitChanged = true;\n }\n return shouldEmitChanged;\n }, false);\n if (shouldEmitChanged) {\n this.emit('changed');\n }\n };\n return EncodingParametersImpl;\n}(EventEmitter));\n/**\n * At least one of the {@link EncodingParametersImpl}'s bitrate values changed.\n * @event EncodingParametersImpl#changed\n */\nmodule.exports = EncodingParametersImpl;\n//# sourceMappingURL=encodingparameters.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaStreamTrack = require('./webrtc').MediaStreamTrack;\nvar _a = require('./util'), asLocalTrack = _a.asLocalTrack, asLocalTrackPublication = _a.asLocalTrackPublication, trackClass = _a.trackClass;\nvar _b = require('./util/constants'), E = _b.typeErrors, trackPriority = _b.trackPriority;\nvar validateLocalTrack = require('./util/validate').validateLocalTrack;\nvar _c = require('./media/track/es5'), LocalAudioTrack = _c.LocalAudioTrack, LocalDataTrack = _c.LocalDataTrack, LocalVideoTrack = _c.LocalVideoTrack;\nvar LocalAudioTrackPublication = require('./media/track/localaudiotrackpublication');\nvar LocalDataTrackPublication = require('./media/track/localdatatrackpublication');\nvar LocalVideoTrackPublication = require('./media/track/localvideotrackpublication');\nvar Participant = require('./participant');\n/**\n * A {@link LocalParticipant} represents the local {@link Participant} in a\n * {@link Room}.\n * @extends Participant\n * @property {Map} audioTracks -\n * The {@link LocalParticipant}'s {@link LocalAudioTrackPublication}s\n * @property {Map} dataTracks -\n * The {@link LocalParticipant}'s {@link LocalDataTrackPublication}s\n * @property {Map} tracks -\n * The {@link LocalParticipant}'s {@link LocalTrackPublication}s\n * @property {Map} videoTracks -\n * The {@link LocalParticipant}'s {@link LocalVideoTrackPublication}s\n * @property {string} signalingRegion - The geographical region of the\n * signaling edge the {@link LocalParticipant} is connected to.\n *\n * @emits RemoteParticipant#reconnected\n * @emits RemoteParticipant#reconnecting\n * @emits LocalParticipant#trackDimensionsChanged\n * @emits LocalParticipant#trackDisabled\n * @emits LocalParticipant#trackEnabled\n * @emits LocalParticipant#trackPublicationFailed\n * @emits LocalParticipant#trackPublished\n * @emits LocalParticipant#trackStarted\n * @emits LocalParticipant#trackStopped\n * @emits LocalParticipant#trackWarning\n * @emits LocalParticipant#trackWarningsCleared\n */\nvar LocalParticipant = /** @class */ (function (_super) {\n __extends(LocalParticipant, _super);\n /**\n * Construct a {@link LocalParticipant}.\n * @param {ParticipantSignaling} signaling\n * @param {Array} localTracks\n * @param {Object} options\n */\n function LocalParticipant(signaling, localTracks, options) {\n var _this = this;\n options = Object.assign({\n LocalAudioTrack: LocalAudioTrack,\n LocalVideoTrack: LocalVideoTrack,\n LocalDataTrack: LocalDataTrack,\n MediaStreamTrack: MediaStreamTrack,\n LocalAudioTrackPublication: LocalAudioTrackPublication,\n LocalVideoTrackPublication: LocalVideoTrackPublication,\n LocalDataTrackPublication: LocalDataTrackPublication,\n shouldStopLocalTracks: false,\n tracks: localTracks\n }, options);\n var tracksToStop = options.shouldStopLocalTracks\n ? new Set(localTracks.filter(function (localTrack) { return localTrack.kind !== 'data'; }))\n : new Set();\n _this = _super.call(this, signaling, options) || this;\n Object.defineProperties(_this, {\n _eventObserver: {\n value: options.eventObserver\n },\n _LocalAudioTrack: {\n value: options.LocalAudioTrack\n },\n _LocalDataTrack: {\n value: options.LocalDataTrack\n },\n _LocalVideoTrack: {\n value: options.LocalVideoTrack\n },\n _MediaStreamTrack: {\n value: options.MediaStreamTrack\n },\n _LocalAudioTrackPublication: {\n value: options.LocalAudioTrackPublication\n },\n _LocalDataTrackPublication: {\n value: options.LocalDataTrackPublication\n },\n _LocalVideoTrackPublication: {\n value: options.LocalVideoTrackPublication\n },\n _tracksToStop: {\n value: tracksToStop\n },\n signalingRegion: {\n enumerable: true,\n get: function () {\n return signaling.signalingRegion;\n }\n }\n });\n _this._handleTrackSignalingEvents();\n return _this;\n }\n /**\n * @private\n * @param {LocalTrack} track\n * @param {Track.ID} id\n * @param {Track.Priority} priority\n * @returns {?LocalTrack}\n */\n LocalParticipant.prototype._addTrack = function (track, id, priority) {\n var addedTrack = _super.prototype._addTrack.call(this, track, id);\n if (addedTrack && this.state !== 'disconnected') {\n this._addLocalTrack(track, priority);\n }\n return addedTrack;\n };\n /**\n * @private\n * @param {LocalTrack} track\n * @param {Track.Priority} priority\n * @returns {void}\n */\n LocalParticipant.prototype._addLocalTrack = function (track, priority) {\n var _a;\n // check if track has noise cancellation enabled.\n var vendor = (_a = track.noiseCancellation) === null || _a === void 0 ? void 0 : _a.vendor;\n this._signaling.addTrack(track._trackSender, track.name, priority, vendor);\n this._log.info(\"Added a new \" + trackClass(track, true) + \":\", track.id);\n this._log.debug(trackClass(track, true) + \":\", track);\n };\n /**\n * @private\n * @param {LocalTrack} track\n * @param {Track.ID} id\n * @returns {?LocalTrack}\n */\n LocalParticipant.prototype._removeTrack = function (track, id) {\n var removedTrack = _super.prototype._removeTrack.call(this, track, id);\n if (removedTrack && this.state !== 'disconnected') {\n this._signaling.removeTrack(track._trackSender);\n this._log.info(\"Removed a \" + trackClass(track, true) + \":\", track.id);\n this._log.debug(trackClass(track, true) + \":\", track);\n }\n return removedTrack;\n };\n /**\n * Get the {@link LocalTrack} events to re-emit.\n * @private\n * @returns {Array>} events\n */\n LocalParticipant.prototype._getTrackEvents = function () {\n return _super.prototype._getTrackEvents.call(this).concat([\n ['disabled', 'trackDisabled'],\n ['enabled', 'trackEnabled'],\n ['stopped', 'trackStopped']\n ]);\n };\n LocalParticipant.prototype.toString = function () {\n return \"[LocalParticipant #\" + this._instanceId + (this.sid ? \": \" + this.sid : '') + \"]\";\n };\n /**\n * @private\n */\n LocalParticipant.prototype._handleTrackSignalingEvents = function () {\n var _this = this;\n var log = this._log;\n if (this.state === 'disconnected') {\n return;\n }\n var localTrackDisabled = function (localTrack) {\n var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n if (trackSignaling) {\n trackSignaling.disable();\n log.debug(\"Disabled the \" + trackClass(localTrack, true) + \":\", localTrack.id);\n }\n };\n var localTrackEnabled = function (localTrack) {\n var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n if (trackSignaling) {\n trackSignaling.enable();\n log.debug(\"Enabled the \" + trackClass(localTrack, true) + \":\", localTrack.id);\n }\n };\n var localTrackStopped = function (localTrack) {\n // NOTE(mroberts): We shouldn't need to check for `stop`, since DataTracks\n // do not emit \"stopped\".\n var trackSignaling = _this._signaling.getPublication(localTrack._trackSender);\n if (trackSignaling) {\n trackSignaling.stop();\n }\n return trackSignaling;\n };\n var stateChanged = function (state) {\n log.debug('Transitioned to state:', state);\n if (state === 'disconnected') {\n log.debug('Removing LocalTrack event listeners');\n _this._signaling.removeListener('stateChanged', stateChanged);\n _this.removeListener('trackDisabled', localTrackDisabled);\n _this.removeListener('trackEnabled', localTrackEnabled);\n _this.removeListener('trackStopped', localTrackStopped);\n // NOTE(mmalavalli): Remove the stale MediaTrackSender clones so that we\n // do not call replaceTrack() on their RTCRtpSenders.\n _this._tracks.forEach(function (track) {\n var trackSignaling = localTrackStopped(track);\n if (trackSignaling) {\n track._trackSender.removeClone(trackSignaling._trackTransceiver);\n }\n });\n log.info(\"LocalParticipant disconnected. Stopping \" + _this._tracksToStop.size + \" automatically-acquired LocalTracks\");\n _this._tracksToStop.forEach(function (track) {\n track.stop();\n });\n }\n else if (state === 'connected') {\n // NOTE(mmalavalli): Any transition to \"connected\" here is a result of\n // successful signaling reconnection, and not a first-time establishment\n // of the signaling connection.\n log.info('reconnected');\n // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n // Do not signal public events synchronously with lock held.\n setTimeout(function () { return _this.emit('reconnected'); }, 0);\n }\n };\n this.on('trackDisabled', localTrackDisabled);\n this.on('trackEnabled', localTrackEnabled);\n this.on('trackStopped', localTrackStopped);\n this._signaling.on('stateChanged', stateChanged);\n this._tracks.forEach(function (track) {\n _this._addLocalTrack(track, trackPriority.PRIORITY_STANDARD);\n _this._getOrCreateLocalTrackPublication(track).catch(function (error) {\n // Just log a warning for now.\n log.warn(\"Failed to get or create LocalTrackPublication for \" + track + \":\", error);\n });\n });\n };\n /**\n * @private\n * @param {LocalTrack} localTrack\n * @returns {Promise}\n */\n LocalParticipant.prototype._getOrCreateLocalTrackPublication = function (localTrack) {\n var localTrackPublication = getTrackPublication(this.tracks, localTrack);\n if (localTrackPublication) {\n return Promise.resolve(localTrackPublication);\n }\n var log = this._log;\n var self = this;\n var trackSignaling = this._signaling.getPublication(localTrack._trackSender);\n if (!trackSignaling) {\n return Promise.reject(new Error(\"Unexpected error: The \" + localTrack + \" cannot be published\"));\n }\n return new Promise(function (resolve, reject) {\n function updated() {\n var error = trackSignaling.error;\n if (error) {\n trackSignaling.removeListener('updated', updated);\n log.warn(\"Failed to publish the \" + trackClass(localTrack, true) + \": \" + error.message);\n self._removeTrack(localTrack, localTrack.id);\n setTimeout(function () {\n self.emit('trackPublicationFailed', error, localTrack);\n });\n reject(error);\n return;\n }\n if (!self._tracks.has(localTrack.id)) {\n trackSignaling.removeListener('updated', updated);\n reject(new Error(\"The \" + localTrack + \" was unpublished\"));\n return;\n }\n var sid = trackSignaling.sid;\n if (!sid) {\n return;\n }\n trackSignaling.removeListener('updated', updated);\n var options = {\n log: log,\n LocalAudioTrackPublication: self._LocalAudioTrackPublication,\n LocalDataTrackPublication: self._LocalDataTrackPublication,\n LocalVideoTrackPublication: self._LocalVideoTrackPublication\n };\n localTrackPublication = getTrackPublication(self.tracks, localTrack);\n var warningHandler = function (twilioWarningName) {\n return self.emit('trackWarning', twilioWarningName, localTrackPublication);\n };\n var warningsClearedHandler = function () {\n return self.emit('trackWarningsCleared', localTrackPublication);\n };\n var unpublish = function (publication) {\n localTrackPublication.removeListener('trackWarning', warningHandler);\n localTrackPublication.removeListener('trackWarningsCleared', warningsClearedHandler);\n self.unpublishTrack(publication.track);\n };\n if (!localTrackPublication) {\n localTrackPublication = asLocalTrackPublication(localTrack, trackSignaling, unpublish, options);\n self._addTrackPublication(localTrackPublication);\n }\n localTrackPublication.on('warning', warningHandler);\n localTrackPublication.on('warningsCleared', warningsClearedHandler);\n var state = self._signaling.state;\n if (state === 'connected' || state === 'connecting') {\n if (localTrack._processorEventObserver) {\n localTrack._processorEventObserver.on('event', function (event) {\n self._eventObserver.emit('event', {\n name: event.name,\n payload: event.data,\n group: 'video-processor',\n level: 'info'\n });\n });\n }\n // NOTE(csantos): For tracks created before joining a room or already joined but about to publish it\n if (localTrack.processedTrack) {\n localTrack._captureFrames();\n localTrack._setSenderMediaStreamTrack(true);\n }\n }\n if (state === 'connected') {\n setTimeout(function () {\n self.emit('trackPublished', localTrackPublication);\n });\n }\n resolve(localTrackPublication);\n }\n trackSignaling.on('updated', updated);\n });\n };\n /**\n * Publishes a {@link LocalTrack} to the {@link Room}.\n * @param {LocalTrack} localTrack - The {@link LocalTrack} to publish\n * @param {LocalTrackPublishOptions} [options] - The {@link LocalTrackPublishOptions}\n * for publishing the {@link LocalTrack}\n * @returns {Promise} - Resolves with the corresponding\n * {@link LocalTrackPublication} if successful; In a Large Group Room (Maximum\n * Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n * if either the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}\n * is part of a set of {@link LocalTrack}s which along with the published Tracks exceeds 16.\n * @throws {TypeError}\n * @throws {RangeError}\n * @example\n * var Video = require('twilio-video');\n *\n * Video.connect(token, {\n * name: 'my-cool-room',\n * audio: true\n * }).then(function(room) {\n * return Video.createLocalVideoTrack({\n * name: 'camera'\n * }).then(function(localVideoTrack) {\n * return room.localParticipant.publishTrack(localVideoTrack, {\n * priority: 'high'\n * });\n * });\n * }).then(function(publication) {\n * console.log('The LocalTrack \"' + publication.trackName\n * + '\" was successfully published with priority \"'\n * * publication.priority + '\"');\n * });\n */ /**\n * Publishes a MediaStreamTrack to the {@link Room}.\n * @param {MediaStreamTrack} mediaStreamTrack - The MediaStreamTrack\n * to publish; if a corresponding {@link LocalAudioTrack} or\n * {@link LocalVideoTrack} has not yet been published, this method will\n * construct one\n * @param {MediaStreamTrackPublishOptions} [options] - The options for publishing\n * the MediaStreamTrack\n * @returns {Promise} - Resolves with the corresponding\n * {@link LocalTrackPublication} if successful; In a Large Group Room (Maximum\n * Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n * if the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}\n * is part of a set of {@link LocalTrack}s which along with the published Tracks exceeds 16.\n * @throws {TypeError}\n * @throws {RangeError}\n * @example\n * var Video = require('twilio-video');\n *\n * Video.connect(token, {\n * name: 'my-cool-room',\n * audio: true\n * }).then(function(room) {\n * return navigator.mediaDevices.getUserMedia({\n * video: true\n * }).then(function(mediaStream) {\n * var mediaStreamTrack = mediaStream.getTracks()[0];\n * return room.localParticipant.publishTrack(mediaStreamTrack, {\n * name: 'camera',\n * priority: 'high'\n * });\n * });\n * }).then(function(publication) {\n * console.log('The LocalTrack \"' + publication.trackName\n * + '\" was successfully published with priority \"'\n * * publication.priority + '\"');\n * });\n */\n LocalParticipant.prototype.publishTrack = function (localTrackOrMediaStreamTrack, options) {\n var trackPublication = getTrackPublication(this.tracks, localTrackOrMediaStreamTrack);\n if (trackPublication) {\n return Promise.resolve(trackPublication);\n }\n options = Object.assign({\n log: this._log,\n priority: trackPriority.PRIORITY_STANDARD,\n LocalAudioTrack: this._LocalAudioTrack,\n LocalDataTrack: this._LocalDataTrack,\n LocalVideoTrack: this._LocalVideoTrack,\n MediaStreamTrack: this._MediaStreamTrack\n }, options);\n var localTrack;\n try {\n localTrack = asLocalTrack(localTrackOrMediaStreamTrack, options);\n }\n catch (error) {\n return Promise.reject(error);\n }\n var noiseCancellation = localTrack.noiseCancellation;\n var allowedAudioProcessors = this._signaling.audioProcessors;\n if (noiseCancellation && !allowedAudioProcessors.includes(noiseCancellation.vendor)) {\n this._log.warn(noiseCancellation.vendor + \" is not supported in this room. disabling it permanently\");\n noiseCancellation.disablePermanently();\n }\n var priorityValues = Object.values(trackPriority);\n if (!priorityValues.includes(options.priority)) {\n // eslint-disable-next-line new-cap\n return Promise.reject(E.INVALID_VALUE('LocalTrackPublishOptions.priority', priorityValues));\n }\n var addedLocalTrack = this._addTrack(localTrack, localTrack.id, options.priority)\n || this._tracks.get(localTrack.id);\n return this._getOrCreateLocalTrackPublication(addedLocalTrack);\n };\n /**\n * Publishes multiple {@link LocalTrack}s to the {@link Room}.\n * @param {Array} tracks - The {@link LocalTrack}s\n * to publish; for any MediaStreamTracks provided, if a corresponding\n * {@link LocalAudioTrack} or {@link LocalVideoTrack} has not yet been\n * published, this method will construct one\n * @returns {Promise>} - The resulting\n * {@link LocalTrackPublication}s if successful; In a Large Group Room (Maximum\n * Participants greater than 50), rejects with a {@link ParticipantMaxTracksExceededError}\n * if the total number of published Tracks in the Room exceeds 16, or the {@link LocalTrack}s\n * along with the published Tracks exceeds 16.\n * @throws {TypeError}\n */\n LocalParticipant.prototype.publishTracks = function (tracks) {\n if (!Array.isArray(tracks)) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_TYPE('tracks', 'Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n }\n return Promise.all(tracks.map(this.publishTrack, this));\n };\n LocalParticipant.prototype.setBandwidthProfile = function () {\n this._log.warn('setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js');\n };\n /**\n * Sets the {@link NetworkQualityVerbosity} for the {@link LocalParticipant} and\n * {@link RemoteParticipant}s. It does nothing if Network Quality is not enabled\n * while calling {@link connect}.\n * @param {NetworkQualityConfiguration} networkQualityConfiguration - The new\n * {@link NetworkQualityConfiguration}; If either or both of the local and\n * remote {@link NetworkQualityVerbosity} values are absent, then the corresponding\n * existing values are retained\n * @returns {this}\n * @example\n * // Update verbosity levels for both LocalParticipant and RemoteParticipants\n * localParticipant.setNetworkQualityConfiguration({\n * local: 1,\n * remote: 2\n * });\n * @example\n * // Update verbosity level for only the LocalParticipant\n * localParticipant.setNetworkQualityConfiguration({\n * local: 1\n * });\n * @example\n * // Update verbosity level for only the RemoteParticipants\n * localParticipant.setNetworkQualityConfiguration({\n * remote: 2\n * });\n */\n LocalParticipant.prototype.setNetworkQualityConfiguration = function (networkQualityConfiguration) {\n if (typeof networkQualityConfiguration !== 'object'\n || networkQualityConfiguration === null) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_TYPE('networkQualityConfiguration', 'NetworkQualityConfiguration');\n }\n ['local', 'remote'].forEach(function (prop) {\n if (prop in networkQualityConfiguration && (typeof networkQualityConfiguration[prop] !== 'number' || isNaN(networkQualityConfiguration[prop]))) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_TYPE(\"networkQualityConfiguration.\" + prop, 'number');\n }\n });\n this._signaling.setNetworkQualityConfiguration(networkQualityConfiguration);\n return this;\n };\n /**\n * Set the {@link LocalParticipant}'s {@link EncodingParameters}.\n * @param {?EncodingParameters} [encodingParameters] - The new\n * {@link EncodingParameters}; If null, then the bitrate limits are removed;\n * If not specified, then the existing bitrate limits are preserved\n * @returns {this}\n * @throws {TypeError}\n */\n LocalParticipant.prototype.setParameters = function (encodingParameters) {\n if (typeof encodingParameters !== 'undefined'\n && typeof encodingParameters !== 'object') {\n // eslint-disable-next-line new-cap\n throw E.INVALID_TYPE('encodingParameters', 'EncodingParameters, null or undefined');\n }\n if (encodingParameters) {\n if (this._signaling.getParameters().adaptiveSimulcast && encodingParameters.maxVideoBitrate) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_TYPE('encodingParameters', 'encodingParameters.maxVideoBitrate is not compatible with \"preferredVideoCodecs=auto\"');\n }\n ['maxAudioBitrate', 'maxVideoBitrate'].forEach(function (prop) {\n if (typeof encodingParameters[prop] !== 'undefined'\n && typeof encodingParameters[prop] !== 'number'\n && encodingParameters[prop] !== null) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_TYPE(\"encodingParameters.\" + prop, 'number, null or undefined');\n }\n });\n }\n else if (encodingParameters === null) {\n encodingParameters = { maxAudioBitrate: null, maxVideoBitrate: null };\n }\n this._signaling.setParameters(encodingParameters);\n return this;\n };\n /**\n * Stops publishing a {@link LocalTrack} to the {@link Room}.\n * @param {LocalTrack|MediaStreamTrack} track - The {@link LocalTrack}\n * to stop publishing; if a MediaStreamTrack is provided, this method\n * looks up the corresponding {@link LocalAudioTrack} or\n * {@link LocalVideoTrack} to stop publishing\n * @returns {?LocalTrackPublication} - The corresponding\n * {@link LocalTrackPublication} if the {@link LocalTrack} was previously\n * published, null otherwise\n * @throws {TypeError}\n */\n LocalParticipant.prototype.unpublishTrack = function (track) {\n validateLocalTrack(track, {\n LocalAudioTrack: this._LocalAudioTrack,\n LocalDataTrack: this._LocalDataTrack,\n LocalVideoTrack: this._LocalVideoTrack,\n MediaStreamTrack: this._MediaStreamTrack\n });\n var localTrack = this._tracks.get(track.id);\n if (!localTrack) {\n return null;\n }\n var trackSignaling = this._signaling.getPublication(localTrack._trackSender);\n trackSignaling.publishFailed(new Error(\"The \" + localTrack + \" was unpublished\"));\n localTrack = this._removeTrack(localTrack, localTrack.id);\n if (!localTrack) {\n return null;\n }\n var localTrackPublication = getTrackPublication(this.tracks, localTrack);\n if (localTrackPublication) {\n this._removeTrackPublication(localTrackPublication);\n }\n return localTrackPublication;\n };\n /**\n * Stops publishing multiple {@link LocalTrack}s to the {@link Room}.\n * @param {Array} tracks - The {@link LocalTrack}s\n * to stop publishing; for any MediaStreamTracks provided, this method looks\n * up the corresponding {@link LocalAudioTrack} or {@link LocalVideoTrack} to\n * stop publishing\n * @returns {Array} - The corresponding\n * {@link LocalTrackPublication}s that were successfully unpublished\n * @throws {TypeError}\n */\n LocalParticipant.prototype.unpublishTracks = function (tracks) {\n var _this = this;\n if (!Array.isArray(tracks)) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_TYPE('tracks', 'Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack');\n }\n return tracks.reduce(function (unpublishedTracks, track) {\n var unpublishedTrack = _this.unpublishTrack(track);\n return unpublishedTrack ? unpublishedTracks.concat(unpublishedTrack) : unpublishedTracks;\n }, []);\n };\n return LocalParticipant;\n}(Participant));\n/**\n * The {@link LocalParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event LocalParticipant#reconnected\n */\n/**\n * The {@link LocalParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event LocalParticipant#reconnecting\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalVideoTrack}'s dimensions changed.\n * @param {LocalVideoTrack} track - The {@link LocalVideoTrack} whose dimensions changed\n * @event LocalParticipant#trackDimensionsChanged\n */\n/**\n * A {@link LocalTrack} was disabled by the {@link LocalParticipant}.\n * @param {LocalTrack} track - The {@link LocalTrack} that was disabled\n * @event LocalParticipant#trackDisabled\n */\n/**\n * A {@link LocalTrack} was enabled by the {@link LocalParticipant}.\n * @param {LocalTrack} track - The {@link LocalTrack} that was enabled\n * @event LocalParticipant#trackEnabled\n */\n/**\n * A {@link LocalTrack} failed to publish. Check the error message for more\n * information. In a Large Group Room (Maximum Participants greater than 50),\n * this event is raised with a {@link ParticipantMaxTracksExceededError} either\n * when attempting to publish the {@link LocalTrack} will exceed the Maximum Published\n * Tracks limit of 16, or the {@link LocalTrack} is part of a set of {@link LocalTrack}s\n * which along with the published Tracks exceeds 16.\n * @param {TwilioError} error - A {@link TwilioError} explaining why publication\n * failed\n * @param {LocalTrack} localTrack - The {@link LocalTrack} that failed to\n * publish\n * @event LocalParticipant#trackPublicationFailed\n */\n/**\n * A {@link LocalTrack} that was added using {@link LocalParticipant#publishTrack} was successfully published. This event\n * is not raised for {@link LocalTrack}s added in {@link ConnectOptions}.tracks or auto-created within\n * {@link connect}.\n * @param {LocalTrackPublication} publication - The resulting\n * {@link LocalTrackPublication} for the published {@link LocalTrack}\n * @event LocalParticipant#trackPublished\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrack}s started.\n * @param {LocalTrack} track - The {@link LocalTrack} that started\n * @event LocalParticipant#trackStarted\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrack}s stopped, either\n * because {@link LocalTrack#stop} was called or because the underlying\n * MediaStreamTrack ended).\n * @param {LocalTrack} track - The {@link LocalTrack} that stopped\n * @event LocalParticipant#trackStopped\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s encountered a warning.\n * This event is only raised if you enabled warnings using notifyWarnings in ConnectOptions.\n * @param {string} name - The warning that was raised.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that encountered the warning.\n * @event LocalParticipant#trackWarning\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s cleared all warnings.\n * This event is only raised if you enabled warnings using notifyWarnings in ConnectOptions.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that cleared all warnings.\n * @event LocalParticipant#trackWarningsCleared\n */\n/**\n * Outgoing media encoding parameters.\n * @typedef {object} EncodingParameters\n * @property {?number} [maxAudioBitrate] - Max outgoing audio bitrate (bps);\n * If not specified, retains the existing bitrate limit; A null or a\n * 0 value removes any previously set bitrate limit; This value is set\n * as a hint for variable bitrate codecs, but will not take effect for fixed bitrate\n * codecs; Based on our tests, Chrome, Firefox and Safari support a bitrate range of\n * 12000 bps to 256000 bps for Opus codec; This parameter has no effect on iSAC, PCMU\n * and PCMA codecs\n * @property {?number} [maxVideoBitrate] - Max outgoing video bitrate (bps);\n * If not specified, retains the existing bitrate limit; A null or\n * a 0 value removes any previously set bitrate limit; This value is\n * set as a hint for variable bitrate codecs, but will not take effect for fixed\n * bitrate codecs; Based on our tests, Chrome, Firefox and Safari all seem to support\n * an average bitrate range of 20000 bps (20 kbps) to 8000000 bps (8 mbps) for a\n * 720p VideoTrack.\n * Note: this limit is not applied for screen share tracks published on Chrome.\n */\n/**\n * Options for publishing a {@link LocalTrack}.\n * @typedef {object} LocalTrackPublishOptions\n * @property {Track.Priority} [priority='standard'] - The priority with which the {@link LocalTrack}\n * is to be published; In Group or Small Group Rooms, the appropriate bandwidth is\n * allocated to the {@link LocalTrack} based on its {@link Track.Priority}; It has no\n * effect in Peer-to-Peer Rooms; It defaults to \"standard\" when not provided\n */\n/**\n * Options for publishing a {@link MediaStreamTrack}.\n * @typedef {LocalTrackOptions} MediaStreamTrackPublishOptions\n * @property {Track.Priority} [priority='standard'] - The priority with which the {@link LocalTrack}\n * is to be published; In Group or Small Group Rooms, the appropriate bandwidth is\n * allocated to the {@link LocalTrack} based on its {@link Track.Priority}; It has no\n * effect in Peer-to-Peer Rooms; It defaults to \"standard\" when not provided\n */\n/**\n * @private\n * @param {Map} trackPublications\n * @param {LocalTrack|MediaStreamTrack} track\n * @returns {?LocalTrackPublication} trackPublication\n */\nfunction getTrackPublication(trackPublications, track) {\n return Array.from(trackPublications.values()).find(function (trackPublication) { return trackPublication.track === track\n || trackPublication.track.mediaStreamTrack === track; }) || null;\n}\nmodule.exports = LocalParticipant;\n//# sourceMappingURL=localparticipant.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalAudioTrackPublication} is a {@link LocalAudioTrack} that has\n * been published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"audio\"\n * @property {LocalAudioTrack} track - the {@link LocalAudioTrack}\n */\nvar LocalAudioTrackPublication = /** @class */ (function (_super) {\n __extends(LocalAudioTrackPublication, _super);\n /**\n * Construct a {@link LocalAudioTrackPublication}.\n * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n * {@link LocalTrackPublicationSignaling}\n * @param {LocalAudioTrack} track - the {@link LocalAudioTrack}\n * @param {function(LocalTrackPublication): void} unpublish - The callback\n * that unpublishes the {@link LocalTrackPublication}\n * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n */\n function LocalAudioTrackPublication(signaling, track, unpublish, options) {\n return _super.call(this, signaling, track, unpublish, options) || this;\n }\n LocalAudioTrackPublication.prototype.toString = function () {\n return \"[LocalAudioTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n return LocalAudioTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalAudioTrackPublication;\n//# sourceMappingURL=localaudiotrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalDataTrackPublication} is a {@link LocalDataTrack} that has been\n * published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"data\"\n * @property {LocalDataTrack} track - the {@link LocalDataTrack}\n */\nvar LocalDataTrackPublication = /** @class */ (function (_super) {\n __extends(LocalDataTrackPublication, _super);\n /**\n * Construct a {@link LocalDataTrackPublication}.\n * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n * {@link LocalTrackPublicationSignaling}\n * @param {LocalDataTrack} track - the {@link LocalDataTrack}\n * @param {function(LocalTrackPublication): void} unpublish - The callback\n * that unpublishes the {@link LocalTrackPublication}\n * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n */\n function LocalDataTrackPublication(signaling, track, unpublish, options) {\n return _super.call(this, signaling, track, unpublish, options) || this;\n }\n LocalDataTrackPublication.prototype.toString = function () {\n return \"[LocalDataTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n return LocalDataTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalDataTrackPublication;\n//# sourceMappingURL=localdatatrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LocalTrackPublication = require('./localtrackpublication');\n/**\n * A {@link LocalVideoTrackPublication} is a {@link LocalVideoTrack} that has\n * been published to a {@link Room}.\n * @extends LocalTrackPublication\n * @property {Track.Kind} kind - \"video\"\n * @property {LocalVideoTrack} track - the {@link LocalVideoTrack}\n */\nvar LocalVideoTrackPublication = /** @class */ (function (_super) {\n __extends(LocalVideoTrackPublication, _super);\n /**\n * Construct a {@link LocalVideoTrackPublication}.\n * @param {LocalTrackPublicationSignaling} signaling - The corresponding\n * {@link LocalTrackPublicationSignaling}\n * @param {LocalVideoTrack} track - the {@link LocalVideoTrack}\n * @param {function(LocalTrackPublication): void} unpublish - The callback\n * that unpublishes the {@link LocalTrackPublication}\n * @param {TrackPublicationOptions} options - {@link LocalTrackPublication} options\n */\n function LocalVideoTrackPublication(signaling, track, unpublish, options) {\n return _super.call(this, signaling, track, unpublish, options) || this;\n }\n LocalVideoTrackPublication.prototype.toString = function () {\n return \"[LocalVideoTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n return LocalVideoTrackPublication;\n}(LocalTrackPublication));\nmodule.exports = LocalVideoTrackPublication;\n//# sourceMappingURL=localvideotrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar AudioTrack = require('./audiotrack');\nvar mixinRemoteMediaTrack = require('./remotemediatrack');\nvar RemoteMediaAudioTrack = mixinRemoteMediaTrack(AudioTrack);\n/**\n * A {@link RemoteAudioTrack} represents an {@link AudioTrack} published to a\n * {@link Room} by a {@link RemoteParticipant}.\n * @extends AudioTrack\n * @property {boolean} isEnabled - Whether the {@link RemoteAudioTrack} is enabled\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteAudioTrack} is switched off\n * @property {Track.SID} sid - The {@link RemoteAudioTrack}'s SID\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteAudioTrack}\n * @emits RemoteAudioTrack#disabled\n * @emits RemoteAudioTrack#enabled\n * @emits RemoteAudioTrack#started\n * @emits RemoteAudioTrack#switchedOff\n * @emits RemoteAudioTrack#switchedOn\n */\nvar RemoteAudioTrack = /** @class */ (function (_super) {\n __extends(RemoteAudioTrack, _super);\n /**\n * Construct a {@link RemoteAudioTrack}.\n * @param {Track.SID} sid - The {@link RemoteAudioTrack}'s SID\n * @param {MediaTrackReceiver} mediaTrackReceiver - An audio MediaStreamTrack container\n * @param {boolean} isEnabled - Whether the {@link RemoteAudioTrack} is enabled\n * @param {boolean} isSwitchedOff - Whether the {@link RemoteAudioTrack} is switched off\n * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n * {@link Track.Priority} of the {@link RemoteAudioTrack}\n * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n * @param {{log: Log}} options - The {@link RemoteTrack} options\n */\n function RemoteAudioTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n return _super.call(this, sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) || this;\n }\n RemoteAudioTrack.prototype.toString = function () {\n return \"[RemoteAudioTrack #\" + this._instanceId + \": \" + this.sid + \"]\";\n };\n /**\n * @private\n */\n RemoteAudioTrack.prototype._start = function () {\n _super.prototype._start.call(this);\n if (this._dummyEl) {\n // NOTE(mpatwardhan): To fix VIDEO-6336, clear dummy element after the\n // RemoteAudioTrack has started.\n this._dummyEl.srcObject = null;\n this._dummyEl = null;\n }\n };\n /**\n * Update the subscribe {@link Track.Priority} of the {@link RemoteAudioTrack}.\n * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n * Currently setPriority has no effect on audio tracks.\n * @returns {this}\n * @throws {RangeError}\n */\n RemoteAudioTrack.prototype.setPriority = function (priority) {\n return _super.prototype.setPriority.call(this, priority);\n };\n return RemoteAudioTrack;\n}(RemoteMediaAudioTrack));\n/**\n * The {@link RemoteAudioTrack} was disabled, i.e. \"muted\".\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n * disabled\n * @event RemoteAudioTrack#disabled\n */\n/**\n * The {@link RemoteAudioTrack} was enabled, i.e. \"unmuted\".\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n * enabled\n * @event RemoteAudioTrack#enabled\n */\n/**\n * The {@link RemoteAudioTrack} started. This means there is enough audio data\n * to begin playback.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that started\n * @event RemoteAudioTrack#started\n */\n/**\n * A {@link RemoteAudioTrack} was switched off.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n * switched off\n * @event RemoteAudioTrack#switchedOff\n */\n/**\n * A {@link RemoteAudioTrack} was switched on.\n * @param {RemoteAudioTrack} track - The {@link RemoteAudioTrack} that was\n * switched on\n * @event RemoteAudioTrack#switchedOn\n */\nmodule.exports = RemoteAudioTrack;\n//# sourceMappingURL=remoteaudiotrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteAudioTrackPublication} represents a {@link RemoteAudioTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"audio\"\n * @property {?RemoteAudioTrack} track - unless you have subscribed to the\n * {@link RemoteAudioTrack}, this property is null\n * @emits RemoteAudioTrackPublication#subscribed\n * @emits RemoteAudioTrackPublication#subscriptionFailed\n * @emits RemoteAudioTrackPublication#trackDisabled\n * @emits RemoteAudioTrackPublication#trackEnabled\n * @emits RemoteAudioTrackPublication#unsubscribed\n */\nvar RemoteAudioTrackPublication = /** @class */ (function (_super) {\n __extends(RemoteAudioTrackPublication, _super);\n /**\n * Construct a {@link RemoteAudioTrackPublication}.\n * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n * options\n */\n function RemoteAudioTrackPublication(signaling, options) {\n return _super.call(this, signaling, options) || this;\n }\n RemoteAudioTrackPublication.prototype.toString = function () {\n return \"[RemoteAudioTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n return RemoteAudioTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteAudioTrack}.\n * @param {RemoteAudioTrack} track - the {@link RemoteAudioTrack} that was subscribed to\n * @event RemoteAudioTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteAudioTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteAudioTrack} could not be\n * subscribed to\n * @event RemoteAudioTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteAudioTrack} was disabled.\n * @event RemoteAudioTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteAudioTrack} was enabled.\n * @event RemoteAudioTrackPublication#trackEnabled\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteAudioTrack}.\n * @param {RemoteAudioTrack} track - the {@link RemoteAudioTrack} that was unsubscribed from\n * @event RemoteAudioTrackPublication#unsubscribed\n */\nmodule.exports = RemoteAudioTrackPublication;\n//# sourceMappingURL=remoteaudiotrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar Track = require('./');\nvar _a = require('../../util/constants'), E = _a.typeErrors, trackPriority = _a.trackPriority;\n/**\n * A {@link RemoteDataTrack} represents data published to a {@link Room} by a\n * {@link RemoteParticipant}.\n * @extends Track\n * @property {boolean} isEnabled - true\n * @property {boolean} isSubscribed - Whether the {@link RemoteDataTrack} is\n * subscribed to\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteDataTrack} is\n * switched off\n * @property {Track.Kind} kind - \"data\"\n * @property {?number} maxPacketLifeTime - If non-null, this represents a time\n * limit (in milliseconds) during which data will be transmitted or\n * retransmitted if not acknowledged on the underlying RTCDataChannel.\n * @property {?number} maxRetransmits - If non-null, this represents the number\n * of times the data will be retransmitted if not successfully received on the\n * underlying RTCDataChannel.\n * @property {boolean} ordered - true if data on the {@link RemoteDataTrack} can\n * be received out-of-order.\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteDataTrack}\n * @property {boolean} reliable - This is true if both\n * maxPacketLifeTime and maxRetransmits are set to\n * null. In other words, if this is true, there is no bound on packet lifetime\n * or the number of retransmits that will be attempted, ensuring \"reliable\"\n * transmission.\n * @property {Track.SID} sid - The SID assigned to the {@link RemoteDataTrack}\n * @emits RemoteDataTrack#message\n * @emits RemoteDataTrack#switchedOff\n * @emits RemoteDataTrack#switchedOn\n */\nvar RemoteDataTrack = /** @class */ (function (_super) {\n __extends(RemoteDataTrack, _super);\n /**\n * Construct a {@link RemoteDataTrack} from a {@link DataTrackReceiver}.\n * @param {Track.SID} sid\n * @param {DataTrackReceiver} dataTrackReceiver\n * @param {{log: Log, name: ?string}} options\n */\n function RemoteDataTrack(sid, dataTrackReceiver, options) {\n var _this = _super.call(this, dataTrackReceiver.id, 'data', options) || this;\n Object.defineProperties(_this, {\n _isSwitchedOff: {\n value: false,\n writable: true\n },\n _priority: {\n value: null,\n writable: true\n },\n isEnabled: {\n enumerable: true,\n value: true\n },\n isSwitchedOff: {\n enumerable: true,\n get: function () {\n return this._isSwitchedOff;\n }\n },\n maxPacketLifeTime: {\n enumerable: true,\n value: dataTrackReceiver.maxPacketLifeTime\n },\n maxRetransmits: {\n enumerable: true,\n value: dataTrackReceiver.maxRetransmits\n },\n ordered: {\n enumerable: true,\n value: dataTrackReceiver.ordered\n },\n priority: {\n enumerable: true,\n get: function () {\n return this._priority;\n }\n },\n reliable: {\n enumerable: true,\n value: dataTrackReceiver.maxPacketLifeTime === null\n && dataTrackReceiver.maxRetransmits === null\n },\n sid: {\n enumerable: true,\n value: sid\n }\n });\n dataTrackReceiver.on('message', function (data) {\n _this.emit('message', data, _this);\n });\n return _this;\n }\n /**\n * Update the subscriber {@link Track.Priority} of the {@link RemoteDataTrack}.\n * @param {?Track.Priority} priority - the new {@link Track.priority};\n * Currently setPriority has no effect on data tracks.\n * @returns {this}\n * @throws {RangeError}\n */\n RemoteDataTrack.prototype.setPriority = function (priority) {\n var priorityValues = __spreadArray([null], __read(Object.values(trackPriority)));\n if (!priorityValues.includes(priority)) {\n // eslint-disable-next-line new-cap\n throw E.INVALID_VALUE('priority', priorityValues);\n }\n // Note: priority has no real effect on the data tracks.\n this._priority = priority;\n return this;\n };\n /**\n * @private\n */\n RemoteDataTrack.prototype._setEnabled = function () {\n // Do nothing.\n };\n /**\n * @private\n * @param {boolean} isSwitchedOff\n */\n RemoteDataTrack.prototype._setSwitchedOff = function (isSwitchedOff) {\n if (this._isSwitchedOff !== isSwitchedOff) {\n this._isSwitchedOff = isSwitchedOff;\n this.emit(isSwitchedOff ? 'switchedOff' : 'switchedOn', this);\n }\n };\n return RemoteDataTrack;\n}(Track));\n/**\n * A message was received over the {@link RemoteDataTrack}.\n * @event RemoteDataTrack#message\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that received\n * the message\n */\n/**\n * A {@link RemoteDataTrack} was switched off.\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that was\n * switched off\n * @event RemoteDataTrack#switchedOff\n */\n/**\n * A {@link RemoteDataTrack} was switched on.\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} that was\n * switched on\n * @event RemoteDataTrack#switchedOn\n */\nmodule.exports = RemoteDataTrack;\n//# sourceMappingURL=remotedatatrack.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteDataTrackPublication} represents a {@link RemoteDataTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"data\"\n * @property {?RemoteDataTrack} track - unless you have subscribed to the\n * {@link RemoteDataTrack}, this property is null\n * @emits RemoteDataTrackPublication#subscribed\n * @emits RemoteDataTrackPublication#subscriptionFailed\n * @emits RemoteDataTrackPublication#unsubscribed\n */\nvar RemoteDataTrackPublication = /** @class */ (function (_super) {\n __extends(RemoteDataTrackPublication, _super);\n /**\n * Construct a {@link RemoteDataTrackPublication}.\n * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n * options\n */\n function RemoteDataTrackPublication(signaling, options) {\n return _super.call(this, signaling, options) || this;\n }\n RemoteDataTrackPublication.prototype.toString = function () {\n return \"[RemoteDataTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n return RemoteDataTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteDataTrack}.\n * @param {RemoteDataTrack} track - the {@link RemoteDataTrack} that was subscribed to\n * @event RemoteDataTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteDataTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteDataTrack} could not be\n * subscribed to\n * @event RemoteDataTrackPublication#subscriptionFailed\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteDataTrack}.\n * @param {RemoteDataTrack} track - the {@link RemoteDataTrack} that was unsubscribed from\n * @event RemoteDataTrackPublication#unsubscribed\n */\nmodule.exports = RemoteDataTrackPublication;\n//# sourceMappingURL=remotedatatrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar mixinRemoteMediaTrack = require('./remotemediatrack');\nvar VideoTrack = require('./videotrack');\nvar documentVisibilityMonitor = require('../../util/documentvisibilitymonitor.js');\nvar NullObserver = require('../../util/nullobserver.js').NullObserver;\nvar Timeout = require('../../util/timeout');\nvar RemoteMediaVideoTrack = mixinRemoteMediaTrack(VideoTrack);\nvar TRACK_TURN_OF_DELAY_MS = 50;\n/**\n * A {@link RemoteVideoTrack} represents a {@link VideoTrack} published to a\n * {@link Room} by a {@link RemoteParticipant}.\n * @extends VideoTrack\n * @property {boolean} isEnabled - Whether the {@link RemoteVideoTrack} is enabled\n * @property {boolean} isSwitchedOff - Whether the {@link RemoteVideoTrack} is switched off\n * @property {Track.SID} sid - The {@link RemoteVideoTrack}'s SID\n * @property {?Track.Priority} priority - The subscribe priority of the {@link RemoteVideoTrack}\n * @emits RemoteVideoTrack#dimensionsChanged\n * @emits RemoteVideoTrack#disabled\n * @emits RemoteVideoTrack#enabled\n * @emits RemoteVideoTrack#started\n * @emits RemoteVideoTrack#switchedOff\n * @emits RemoteVideoTrack#switchedOn\n */\nvar RemoteVideoTrack = /** @class */ (function (_super) {\n __extends(RemoteVideoTrack, _super);\n /**\n * Construct a {@link RemoteVideoTrack}.\n * @param {Track.SID} sid - The {@link RemoteVideoTrack}'s SID\n * @param {MediaTrackReceiver} mediaTrackReceiver - A video MediaStreamTrack container\n * @param {boolean} isEnabled - whether the {@link RemoteVideoTrack} is enabled\n * @param {boolean} isSwitchedOff - Whether the {@link RemoteVideoTrack} is switched off\n * @param {function(?Track.Priority): void} setPriority - Set or clear the subscribe\n * {@link Track.Priority} of the {@link RemoteVideoTrack}\n * @param {function(ClientRenderHint): void} setRenderHint - Set render hints.\n * @param {{log: Log}} options - The {@link RemoteTrack} options\n */\n function RemoteVideoTrack(sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) {\n var _this = this;\n options = Object.assign({\n clientTrackSwitchOffControl: 'auto',\n contentPreferencesMode: 'auto',\n enableDocumentVisibilityTurnOff: true,\n }, options);\n options = Object.assign({\n IntersectionObserver: typeof IntersectionObserver === 'undefined' || options.clientTrackSwitchOffControl !== 'auto' ? NullObserver : IntersectionObserver,\n ResizeObserver: typeof ResizeObserver === 'undefined' || options.contentPreferencesMode !== 'auto' ? NullObserver : ResizeObserver,\n }, options);\n _this = _super.call(this, sid, mediaTrackReceiver, isEnabled, isSwitchedOff, setPriority, setRenderHint, options) || this;\n Object.defineProperties(_this, {\n _enableDocumentVisibilityTurnOff: {\n value: options.enableDocumentVisibilityTurnOff === true && options.clientTrackSwitchOffControl === 'auto',\n },\n _documentVisibilityTurnOffCleanup: {\n value: null,\n writable: true\n },\n _clientTrackSwitchOffControl: {\n value: options.clientTrackSwitchOffControl,\n },\n _contentPreferencesMode: {\n value: options.contentPreferencesMode,\n },\n _invisibleElements: {\n value: new WeakSet(),\n },\n _elToPipCallbacks: {\n value: new WeakMap(),\n },\n _elToPipWindows: {\n value: new WeakMap(),\n },\n _turnOffTimer: {\n value: new Timeout(function () {\n _this._setRenderHint({ enabled: false });\n }, TRACK_TURN_OF_DELAY_MS, false),\n },\n _resizeObserver: {\n value: new options.ResizeObserver(function (entries) {\n // NOTE(mpatwardhan): we ignore elements in _invisibleElements\n // to ensure that ResizeObserver does not end-up turning off a track when a fresh Video element is\n // attached and IntersectionObserver has not had its callback executed yet.\n var visibleElementResized = entries.find(function (entry) { return !_this._invisibleElements.has(entry.target); });\n if (visibleElementResized) {\n maybeUpdateDimensionHint(_this);\n }\n })\n },\n _intersectionObserver: {\n value: new options.IntersectionObserver(function (entries) {\n var shouldSetRenderHint = false;\n entries.forEach(function (entry) {\n var wasVisible = !_this._invisibleElements.has(entry.target);\n if (wasVisible !== entry.isIntersecting) {\n if (entry.isIntersecting) {\n _this._log.debug('intersectionObserver detected: Off => On');\n _this._invisibleElements.delete(entry.target);\n }\n else {\n _this._log.debug('intersectionObserver detected: On => Off');\n _this._invisibleElements.add(entry.target);\n }\n shouldSetRenderHint = true;\n }\n });\n if (shouldSetRenderHint) {\n maybeUpdateEnabledHint(_this);\n // when visibility of an element changes that may cause the \"biggest\" element to change,\n // update dimensions as well. since dimensions are cached and de-duped at signaling layer,\n // its okay if they got resent.\n maybeUpdateDimensionHint(_this);\n }\n }, { threshold: 0.25 })\n },\n });\n return _this;\n }\n /**\n * @private\n */\n RemoteVideoTrack.prototype._start = function (dummyEl) {\n var result = _super.prototype._start.call(this, dummyEl);\n // NOTE(mpatwardhan): after emitting started, update turn off track if not visible.\n maybeUpdateEnabledHint(this);\n return result;\n };\n /**\n * Request to switch on a {@link RemoteVideoTrack}, This method is applicable only for the group rooms and only when connected with\n * clientTrackSwitchOffControl in video bandwidth profile options set to 'manual'\n * @returns {this}\n */\n RemoteVideoTrack.prototype.switchOn = function () {\n if (this._clientTrackSwitchOffControl !== 'manual') {\n throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.clientTrackSwitchOffControl is set to \"manual\"');\n }\n this._setRenderHint({ enabled: true });\n return this;\n };\n /**\n * Request to switch off a {@link RemoteVideoTrack}, This method is applicable only for the group rooms and only when connected with\n * clientTrackSwitchOffControl in video bandwidth profile options set to 'manual'\n * @returns {this}\n */\n RemoteVideoTrack.prototype.switchOff = function () {\n if (this._clientTrackSwitchOffControl !== 'manual') {\n throw new Error('Invalid state. You can call switchOff only when bandwidthProfile.video.clientTrackSwitchOffControl is set to \"manual\"');\n }\n this._setRenderHint({ enabled: false });\n return this;\n };\n /**\n * Set the {@link RemoteVideoTrack}'s content preferences. This method is applicable only for the group rooms and only when connected with\n * videoContentPreferencesMode in video bandwidth profile options set to 'manual'\n * @param {VideoContentPreferences} contentPreferences - requested preferences.\n * @returns {this}\n */\n RemoteVideoTrack.prototype.setContentPreferences = function (contentPreferences) {\n if (this._contentPreferencesMode !== 'manual') {\n throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.contentPreferencesMode is set to \"manual\"');\n }\n if (contentPreferences.renderDimensions) {\n this._setRenderHint({ renderDimensions: contentPreferences.renderDimensions });\n }\n return this;\n };\n RemoteVideoTrack.prototype._unObservePip = function (el) {\n var pipCallbacks = this._elToPipCallbacks.get(el);\n if (pipCallbacks) {\n el.removeEventListener('enterpictureinpicture', pipCallbacks.onEnterPip);\n el.removeEventListener('leavepictureinpicture', pipCallbacks.onLeavePip);\n this._elToPipCallbacks.delete(el);\n }\n };\n RemoteVideoTrack.prototype._observePip = function (el) {\n var _this = this;\n var pipCallbacks = this._elToPipCallbacks.get(el);\n if (!pipCallbacks) {\n var onEnterPip = function (event) { return _this._onEnterPip(event, el); };\n var onLeavePip = function (event) { return _this._onLeavePip(event, el); };\n var onResizePip = function (event) { return _this._onResizePip(event, el); };\n el.addEventListener('enterpictureinpicture', onEnterPip);\n el.addEventListener('leavepictureinpicture', onLeavePip);\n this._elToPipCallbacks.set(el, { onEnterPip: onEnterPip, onLeavePip: onLeavePip, onResizePip: onResizePip });\n }\n };\n RemoteVideoTrack.prototype._onEnterPip = function (event, videoEl) {\n this._log.debug('onEnterPip');\n var pipWindow = event.pictureInPictureWindow;\n this._elToPipWindows.set(videoEl, pipWindow);\n var onResizePip = this._elToPipCallbacks.get(videoEl).onResizePip;\n pipWindow.addEventListener('resize', onResizePip);\n maybeUpdateEnabledHint(this);\n };\n RemoteVideoTrack.prototype._onLeavePip = function (event, videoEl) {\n this._log.debug('onLeavePip');\n this._elToPipWindows.delete(videoEl);\n var onResizePip = this._elToPipCallbacks.get(videoEl).onResizePip;\n var pipWindow = event.pictureInPictureWindow;\n pipWindow.removeEventListener('resize', onResizePip);\n maybeUpdateEnabledHint(this);\n };\n RemoteVideoTrack.prototype._onResizePip = function () {\n maybeUpdateDimensionHint(this);\n };\n RemoteVideoTrack.prototype.attach = function (el) {\n var result = _super.prototype.attach.call(this, el);\n if (this._clientTrackSwitchOffControl === 'auto') {\n // start off the element as invisible. will mark it\n // visible (and update render hints) once intersection observer calls back.\n this._invisibleElements.add(result);\n }\n this._intersectionObserver.observe(result);\n this._resizeObserver.observe(result);\n if (this._enableDocumentVisibilityTurnOff) {\n this._documentVisibilityTurnOffCleanup = this._documentVisibilityTurnOffCleanup || setupDocumentVisibilityTurnOff(this);\n }\n this._observePip(result);\n return result;\n };\n RemoteVideoTrack.prototype.detach = function (el) {\n var _this = this;\n var result = _super.prototype.detach.call(this, el);\n var elements = Array.isArray(result) ? result : [result];\n elements.forEach(function (element) {\n _this._intersectionObserver.unobserve(element);\n _this._resizeObserver.unobserve(element);\n _this._invisibleElements.delete(element);\n _this._unObservePip(element);\n });\n if (this._attachments.size === 0) {\n if (this._documentVisibilityTurnOffCleanup) {\n this._documentVisibilityTurnOffCleanup();\n this._documentVisibilityTurnOffCleanup = null;\n }\n }\n maybeUpdateEnabledHint(this);\n maybeUpdateDimensionHint(this);\n return result;\n };\n /**\n * Add a {@link VideoProcessor} to allow for custom processing of video frames belonging to a VideoTrack.\n * When a Participant un-publishes and re-publishes a VideoTrack, a new RemoteVideoTrack is created and\n * any VideoProcessors attached to the previous RemoteVideoTrack would have to be re-added again.\n * @param {VideoProcessor} processor - The {@link VideoProcessor} to use.\n * @param {AddProcessorOptions} [options] - {@link AddProcessorOptions} to provide.\n * @returns {this}\n * @example\n * class GrayScaleProcessor {\n * constructor(percentage) {\n * this.percentage = percentage;\n * }\n * processFrame(inputFrameBuffer, outputFrameBuffer) {\n * const context = outputFrameBuffer.getContext('2d');\n * context.filter = `grayscale(${this.percentage}%)`;\n * context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n * }\n * }\n *\n * const grayscaleProcessor = new GrayScaleProcessor(100);\n *\n * Array.from(room.participants.values()).forEach(participant => {\n * const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n * remoteVideoTrack.addProcessor(grayscaleProcessor);\n * });\n */\n RemoteVideoTrack.prototype.addProcessor = function () {\n return _super.prototype.addProcessor.apply(this, arguments);\n };\n /**\n * Remove the previously added {@link VideoProcessor} using `addProcessor` API.\n * @param {VideoProcessor} processor - The {@link VideoProcessor} to remove.\n * @returns {this}\n * @example\n * class GrayScaleProcessor {\n * constructor(percentage) {\n * this.percentage = percentage;\n * }\n * processFrame(inputFrameBuffer, outputFrameBuffer) {\n * const context = outputFrameBuffer.getContext('2d');\n * context.filter = `grayscale(${this.percentage}%)`;\n * context.drawImage(inputFrameBuffer, 0, 0, inputFrameBuffer.width, inputFrameBuffer.height);\n * }\n * }\n *\n * const grayscaleProcessor = new GrayScaleProcessor(100);\n *\n * Array.from(room.participants.values()).forEach(participant => {\n * const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n * remoteVideoTrack.addProcessor(grayscaleProcessor);\n * });\n *\n * document.getElementById('remove-button').onclick = () => {\n * Array.from(room.participants.values()).forEach(participant => {\n * const remoteVideoTrack = Array.from(participant.videoTracks.values())[0].track;\n * remoteVideoTrack.removeProcessor(grayscaleProcessor);\n * });\n * }\n */\n RemoteVideoTrack.prototype.removeProcessor = function () {\n return _super.prototype.removeProcessor.apply(this, arguments);\n };\n RemoteVideoTrack.prototype.toString = function () {\n return \"[RemoteVideoTrack #\" + this._instanceId + \": \" + this.sid + \"]\";\n };\n /**\n * Update the subscribe {@link Track.Priority} of the {@link RemoteVideoTrack}.\n * @param {?Track.Priority} priority - the new subscribe {@link Track.Priority};\n * If null, then the subscribe {@link Track.Priority} is cleared, which\n * means the {@link Track.Priority} set by the publisher is now the effective priority.\n * @returns {this}\n * @throws {RangeError}\n */\n RemoteVideoTrack.prototype.setPriority = function (priority) {\n return _super.prototype.setPriority.call(this, priority);\n };\n return RemoteVideoTrack;\n}(RemoteMediaVideoTrack));\nfunction setupDocumentVisibilityTurnOff(removeVideoTrack) {\n function onVisibilityChanged() {\n maybeUpdateEnabledHint(removeVideoTrack);\n }\n documentVisibilityMonitor.onVisibilityChange(1, onVisibilityChanged);\n return function () {\n documentVisibilityMonitor.offVisibilityChange(1, onVisibilityChanged);\n };\n}\nfunction maybeUpdateEnabledHint(remoteVideoTrack) {\n if (remoteVideoTrack._clientTrackSwitchOffControl !== 'auto') {\n return;\n }\n var visibleElements = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return !remoteVideoTrack._invisibleElements.has(el); });\n var pipWindows = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return remoteVideoTrack._elToPipWindows.has(el); });\n // even when document is invisible we may have track playing in pip window.\n var enabled = pipWindows.length > 0 || (document.visibilityState === 'visible' && visibleElements.length > 0);\n if (enabled === true) {\n remoteVideoTrack._turnOffTimer.clear();\n remoteVideoTrack._setRenderHint({ enabled: true });\n }\n else if (!remoteVideoTrack._turnOffTimer.isSet) {\n // set the track to be turned off after some delay.\n remoteVideoTrack._turnOffTimer.start();\n }\n}\nfunction maybeUpdateDimensionHint(remoteVideoTrack) {\n if (remoteVideoTrack._contentPreferencesMode !== 'auto') {\n return;\n }\n var visibleElements = remoteVideoTrack._getAllAttachedElements().filter(function (el) { return !remoteVideoTrack._invisibleElements.has(el); });\n var pipElements = remoteVideoTrack._getAllAttachedElements().map(function (el) {\n var pipWindow = remoteVideoTrack._elToPipWindows.get(el);\n return pipWindow ? { clientHeight: pipWindow.height, clientWidth: pipWindow.width } : { clientHeight: 0, clientWidth: 0 };\n });\n var totalElements = visibleElements.concat(pipElements);\n if (totalElements.length > 0) {\n var _a = __read(totalElements.sort(function (el1, el2) {\n return el2.clientHeight + el2.clientWidth - el1.clientHeight - el1.clientWidth - 1;\n }), 1), _b = _a[0], clientHeight = _b.clientHeight, clientWidth = _b.clientWidth;\n var renderDimensions = { height: clientHeight, width: clientWidth };\n remoteVideoTrack._setRenderHint({ renderDimensions: renderDimensions });\n }\n}\n/**\n * @typedef {object} VideoContentPreferences\n * @property {VideoTrack.Dimensions} [renderDimensions] - Render Dimensions to request for the {@link RemoteVideoTrack}.\n */\n/**\n * The {@link RemoteVideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose\n * dimensions changed\n * @event RemoteVideoTrack#dimensionsChanged\n */\n/**\n * The {@link RemoteVideoTrack} was disabled, i.e. \"paused\".\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n * disabled\n * @event RemoteVideoTrack#disabled\n */\n/**\n * The {@link RemoteVideoTrack} was enabled, i.e. \"resumed\".\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n * enabled\n * @event RemoteVideoTrack#enabled\n */\n/**\n * The {@link RemoteVideoTrack} started. This means there is enough video data\n * to begin playback.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that started\n * @event RemoteVideoTrack#started\n */\n/**\n * A {@link RemoteVideoTrack} was switched off.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n * switched off\n * @event RemoteVideoTrack#switchedOff\n */\n/**\n * A {@link RemoteVideoTrack} was switched on.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} that was\n * switched on\n * @event RemoteVideoTrack#switchedOn\n */\nmodule.exports = RemoteVideoTrack;\n//# sourceMappingURL=remotevideotrack.js.map","/* eslint-disable no-console */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NullObserver = /** @class */ (function () {\n function NullObserver(callback) {\n Object.defineProperties(this, {\n _callback: {\n value: callback\n }\n });\n }\n NullObserver.prototype.observe = function () {\n };\n NullObserver.prototype.unobserve = function () {\n };\n NullObserver.prototype.makeVisible = function (videoEl) {\n var visibleEntry = this._makeFakeEntry(videoEl, true);\n this._callback([visibleEntry]);\n };\n NullObserver.prototype.makeInvisible = function (videoEl) {\n var invisibleEntry = this._makeFakeEntry(videoEl, false);\n this._callback([invisibleEntry]);\n };\n NullObserver.prototype._makeFakeEntry = function (videoElement, isIntersecting) {\n return { target: videoElement, isIntersecting: isIntersecting };\n };\n return NullObserver;\n}());\nvar NullIntersectionObserver = /** @class */ (function (_super) {\n __extends(NullIntersectionObserver, _super);\n function NullIntersectionObserver() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return NullIntersectionObserver;\n}(NullObserver));\nvar NullResizeObserver = /** @class */ (function (_super) {\n __extends(NullResizeObserver, _super);\n function NullResizeObserver() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NullResizeObserver.prototype.resize = function (videoEl) {\n var entry = this._makeFakeEntry(videoEl, true);\n this._callback([entry]);\n };\n return NullResizeObserver;\n}(NullObserver));\nmodule.exports = { NullIntersectionObserver: NullIntersectionObserver, NullResizeObserver: NullResizeObserver, NullObserver: NullObserver };\n//# sourceMappingURL=nullobserver.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RemoteTrackPublication = require('./remotetrackpublication');\n/**\n * A {@link RemoteVideoTrackPublication} represents a {@link RemoteVideoTrack}\n * that has been published to a {@link Room}.\n * @property {Track.Kind} kind - \"video\"\n * @property {?RemoteVideoTrack} track - unless you have subscribed to the\n * {@link RemoteVideoTrack}, this property is null\n * @emits RemoteVideoTrackPublication#subscribed\n * @emits RemoteVideoTrackPublication#subscriptionFailed\n * @emits RemoteVideoTrackPublication#trackDisabled\n * @emits RemoteVideoTrackPublication#trackEnabled\n * @emits RemoteVideoTrackPublication#unsubscribed\n */\nvar RemoteVideoTrackPublication = /** @class */ (function (_super) {\n __extends(RemoteVideoTrackPublication, _super);\n /**\n * Construct a {@link RemoteVideoTrackPublication}.\n * @param {RemoteTrackPublicationSignaling} signaling - {@link RemoteTrackPublication} signaling\n * @param {RemoteTrackPublicationOptions} options - {@link RemoteTrackPublication}\n * options\n */\n function RemoteVideoTrackPublication(signaling, options) {\n return _super.call(this, signaling, options) || this;\n }\n RemoteVideoTrackPublication.prototype.toString = function () {\n return \"[RemoteVideoTrackPublication #\" + this._instanceId + \": \" + this.trackSid + \"]\";\n };\n return RemoteVideoTrackPublication;\n}(RemoteTrackPublication));\n/**\n * Your {@link LocalParticipant} subscribed to the {@link RemoteVideoTrack}.\n * @param {RemoteVideoTrack} track - the {@link RemoteVideoTrack} that was subscribed to\n * @event RemoteVideoTrackPublication#subscribed\n */\n/**\n * Your {@link LocalParticipant} failed to subscribe to the {@link RemoteVideoTrack}.\n * @param {TwilioError} error - the reason the {@link RemoteVideoTrack} could not be\n * subscribed to\n * @event RemoteVideoTrackPublication#subscriptionFailed\n */\n/**\n * The {@link RemoteVideoTrack} was disabled.\n * @event RemoteVideoTrackPublication#trackDisabled\n */\n/**\n * The {@link RemoteVideoTrack} was enabled.\n * @event RemoteVideoTrackPublication#trackEnabled\n */\n/**\n * Your {@link LocalParticipant} unsubscribed from the {@link RemoteVideoTrack}.\n * @param {RemoteVideoTrack} track - the {@link RemoteVideoTrack} that was unsubscribed from\n * @event RemoteVideoTrackPublication#unsubscribed\n */\nmodule.exports = RemoteVideoTrackPublication;\n//# sourceMappingURL=remotevideotrackpublication.js.map","// eslint-disable-next-line no-warning-comments\n// TODO(mroberts): This should be described as implementing some\n// InsightsPublisher interface.\n'use strict';\n/**\n * Null Insights publisher.\n */\nvar InsightsPublisher = /** @class */ (function () {\n function InsightsPublisher() {\n Object.defineProperties(this, {\n _connected: {\n writable: true,\n value: true\n }\n });\n }\n /**\n * Connect\n * @returns {void}\n */\n InsightsPublisher.prototype.connect = function () {\n };\n /**\n * Disconnect.\n * @returns {boolean}\n */\n InsightsPublisher.prototype.disconnect = function () {\n if (this._connected) {\n this._connected = false;\n return true;\n }\n return false;\n };\n /**\n * Publish.\n * @returns {boolean}\n */\n InsightsPublisher.prototype.publish = function () {\n return this._connected;\n };\n return InsightsPublisher;\n}());\nmodule.exports = InsightsPublisher;\n//# sourceMappingURL=null.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar EventEmitter = require('events').EventEmitter;\nvar _a = require('./util/constants'), DEFAULT_NQ_LEVEL_LOCAL = _a.DEFAULT_NQ_LEVEL_LOCAL, DEFAULT_NQ_LEVEL_REMOTE = _a.DEFAULT_NQ_LEVEL_REMOTE, MAX_NQ_LEVEL = _a.MAX_NQ_LEVEL;\nvar inRange = require('./util').inRange;\n/**\n * {@link NetworkQualityConfigurationImpl} represents an object which notifies its\n * listeners of any changes in the values of its properties.\n * @extends EventEmitter\n * @implements NetworkQualityConfiguration\n * @property {?NetworkQualityVerbosity} local - Verbosity level for {@link LocalParticipant}\n * @property {?NetworkQualityVerbosity} remote - Verbosity level for {@link RemoteParticipant}s\n */\nvar NetworkQualityConfigurationImpl = /** @class */ (function (_super) {\n __extends(NetworkQualityConfigurationImpl, _super);\n /**\n * Construct an {@link NetworkQualityConfigurationImpl}.\n * @param {NetworkQualityConfiguration} networkQualityConfiguration - Initial {@link NetworkQualityConfiguration}\n */\n function NetworkQualityConfigurationImpl(networkQualityConfiguration) {\n var _this = _super.call(this) || this;\n networkQualityConfiguration = Object.assign({\n local: DEFAULT_NQ_LEVEL_LOCAL,\n remote: DEFAULT_NQ_LEVEL_REMOTE\n }, networkQualityConfiguration);\n Object.defineProperties(_this, {\n local: {\n value: inRange(networkQualityConfiguration.local, DEFAULT_NQ_LEVEL_LOCAL, MAX_NQ_LEVEL)\n ? networkQualityConfiguration.local\n : DEFAULT_NQ_LEVEL_LOCAL,\n writable: true\n },\n remote: {\n value: inRange(networkQualityConfiguration.remote, DEFAULT_NQ_LEVEL_REMOTE, MAX_NQ_LEVEL)\n ? networkQualityConfiguration.remote\n : DEFAULT_NQ_LEVEL_REMOTE,\n writable: true\n }\n });\n return _this;\n }\n /**\n * Update the verbosity levels for network quality information for\n * {@link LocalParticipant} and {@link RemoteParticipant} with those\n * in the given {@link NetworkQualityConfiguration}.\n * @param {NetworkQualityConfiguration} networkQualityConfiguration - The new {@link NetworkQualityConfiguration}\n */\n NetworkQualityConfigurationImpl.prototype.update = function (networkQualityConfiguration) {\n var _this = this;\n networkQualityConfiguration = Object.assign({\n local: this.local,\n remote: this.remote\n }, networkQualityConfiguration);\n [\n ['local', DEFAULT_NQ_LEVEL_LOCAL, 3],\n ['remote', DEFAULT_NQ_LEVEL_REMOTE, 3]\n ].forEach(function (_a) {\n var _b = __read(_a, 3), localOrRemote = _b[0], min = _b[1], max = _b[2];\n _this[localOrRemote] = typeof networkQualityConfiguration[localOrRemote] === 'number'\n && inRange(networkQualityConfiguration[localOrRemote], min, max)\n ? networkQualityConfiguration[localOrRemote]\n : min;\n });\n };\n return NetworkQualityConfigurationImpl;\n}(EventEmitter));\nmodule.exports = NetworkQualityConfigurationImpl;\n//# sourceMappingURL=networkqualityconfiguration.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar EventEmitter = require('./eventemitter');\nvar RemoteParticipant = require('./remoteparticipant');\nvar StatsReport = require('./stats/statsreport');\nvar _a = require('./util'), flatMap = _a.flatMap, valueToJSON = _a.valueToJSON;\nvar nInstances = 0;\n/**\n * A {@link Room} represents communication between you and one or more\n * {@link RemoteParticipant}s sharing {@link AudioTrack}s and\n * {@link VideoTrack}s.\n *

\n * You can connect to a {@link Room} by calling {@link module:twilio-video.connect}.\n * @extends EventEmitter\n * @property {?RemoteParticipant} dominantSpeaker - The Dominant Speaker in the\n * {@link Room}, if any\n * @property {boolean} isRecording - Whether or not the {@link Room} is being\n * recorded\n * @property {LocalParticipant} localParticipant - Your {@link LocalParticipant}\n * in the {@link Room}\n * @property {string} mediaRegion - String indicating geographical region\n * where media is processed for the {@link Room}.\n * @property {string} name - The {@link Room}'s name\n * @property {Map} participants -\n * The {@link RemoteParticipant}s participating in this {@link Room}\n * @property {Room.SID} sid - The {@link Room}'s SID\n * @property {string} state - \"connected\", \"reconnecting\", or \"disconnected\"\n * @throws {SignalingConnectionDisconnectedError}\n * @emits Room#disconnected\n * @emits Room#participantConnected\n * @emits Room#participantDisconnected\n * @emits Room#participantReconnected\n * @emits Room#participantReconnecting\n * @emits Room#reconnected\n * @emits Room#reconnecting\n * @emits Room#recordingStarted\n * @emits Room#recordingStopped\n * @emits Room#trackDimensionsChanged\n * @emits Room#trackDisabled\n * @emits Room#trackEnabled\n * @emits Room#trackMessage\n * @emits Room#trackPublished\n * @emits Room#trackPublishPriorityChanged\n * @emits Room#trackStarted\n * @emits Room#trackSubscribed\n * @emits Room#trackSwitchedOff\n * @emits Room#trackSwitchedOn\n * @emits Room#trackUnpublished\n * @emits Room#trackUnsubscribed\n * @emits Room#trackWarning\n * @emits Room#trackWarningsCleared\n */\nvar Room = /** @class */ (function (_super) {\n __extends(Room, _super);\n /**\n * Construct a {@link Room}.\n * @param {RoomSignaling} signaling\n * @param {?object} [options={}]\n */\n function Room(localParticipant, signaling, options) {\n var _this = _super.call(this) || this;\n var log = options.log.createLog('default', _this);\n var participants = new Map();\n /* istanbul ignore next */\n Object.defineProperties(_this, {\n _log: {\n value: log\n },\n _clientTrackSwitchOffControl: {\n value: options.clientTrackSwitchOffControl || 'disabled'\n },\n _contentPreferencesMode: {\n value: options.contentPreferencesMode || 'disabled'\n },\n _instanceId: {\n value: ++nInstances\n },\n _options: {\n value: options\n },\n _participants: {\n value: participants\n },\n _signaling: {\n value: signaling\n },\n dominantSpeaker: {\n enumerable: true,\n get: function () {\n return this.participants.get(signaling.dominantSpeakerSid) || null;\n }\n },\n isRecording: {\n enumerable: true,\n get: function () {\n return signaling.recording.isEnabled || false;\n }\n },\n localParticipant: {\n enumerable: true,\n value: localParticipant\n },\n name: {\n enumerable: true,\n value: signaling.name\n },\n participants: {\n enumerable: true,\n value: participants\n },\n sid: {\n enumerable: true,\n value: signaling.sid\n },\n state: {\n enumerable: true,\n get: function () {\n return signaling.state;\n }\n },\n mediaRegion: {\n enumerable: true,\n value: signaling.mediaRegion\n }\n });\n handleLocalParticipantEvents(_this, localParticipant);\n handleRecordingEvents(_this, signaling.recording);\n handleSignalingEvents(_this, signaling);\n verifyNoiseCancellation(_this);\n log.info('Created a new Room:', _this.name);\n log.debug('Initial RemoteParticipants:', Array.from(_this._participants.values()));\n return _this;\n }\n Room.prototype.toString = function () {\n return \"[Room #\" + this._instanceId + \": \" + this.sid + \"]\";\n };\n /**\n * Disconnect from the {@link Room}.\n * @returns {this}\n */\n Room.prototype.disconnect = function () {\n this._log.info('Disconnecting');\n this._signaling.disconnect();\n return this;\n };\n /**\n * Get the {@link Room}'s media statistics. This is not supported in Safari 12.0 or below\n * due to this bug : https://bugs.webkit.org/show_bug.cgi?id=192601\n *\n * @returns {Promise.>}\n */\n Room.prototype.getStats = function () {\n var _this = this;\n return this._signaling.getStats().then(function (responses) {\n return Array.from(responses).map(function (_a) {\n var _b = __read(_a, 2), id = _b[0], response = _b[1];\n return new StatsReport(id, Object.assign({}, response, {\n localAudioTrackStats: rewriteLocalTrackIds(_this, response.localAudioTrackStats),\n localVideoTrackStats: rewriteLocalTrackIds(_this, response.localVideoTrackStats)\n }));\n });\n });\n };\n /**\n * Restart the muted local media {@link Track}s and play inadvertently paused HTMLMediaElements\n * that are attached to local and remote media {@link Track}s. This method is useful mainly on\n * mobile browsers (Safari and Chrome on iOS), where there is a possibility that the muted local\n * media {@link Track}s are never unmuted and inadvertently paused HTMLMediaElements are never\n * played again, especially after handling an incoming phone call.\n * @returns {this}\n */\n Room.prototype.refreshInactiveMedia = function () {\n var localTrackPublications = this.localParticipant.tracks;\n var localMediaTracks = Array.from(localTrackPublications.values())\n .filter(function (_a) {\n var kind = _a.track.kind;\n return kind !== 'data';\n })\n .map(function (_a) {\n var track = _a.track;\n return track;\n });\n var remoteMediaTracks = flatMap(this.participants, function (participants) { return Array.from(participants.tracks.values()); })\n .filter(function (_a) {\n var track = _a.track;\n return track && track.kind !== 'data';\n })\n .map(function (_a) {\n var track = _a.track;\n return track;\n });\n var mediaTracks = localMediaTracks.concat(remoteMediaTracks);\n var unmuteEvent = new Event('unmute');\n localMediaTracks.forEach(function (_a) {\n var isMuted = _a.isMuted, mediaStreamTrack = _a.mediaStreamTrack;\n if (isMuted) {\n mediaStreamTrack.dispatchEvent(unmuteEvent);\n }\n });\n var pauseEvent = new Event('pause');\n mediaTracks.forEach(function (_a) {\n var attachments = _a._attachments, elShims = _a._elShims;\n return attachments.forEach(function (el) {\n var shim = elShims.get(el);\n var isInadvertentlyPaused = el.paused && shim && !shim.pausedIntentionally();\n if (isInadvertentlyPaused) {\n el.dispatchEvent(pauseEvent);\n }\n });\n });\n return this;\n };\n Room.prototype.toJSON = function () {\n return valueToJSON(this);\n };\n return Room;\n}(EventEmitter));\nfunction verifyNoiseCancellation(room) {\n var allowedAudioProcessors = room.localParticipant._signaling.audioProcessors;\n room.localParticipant.audioTracks.forEach(function (_a) {\n var track = _a.track;\n var noiseCancellation = track.noiseCancellation;\n if (noiseCancellation && !allowedAudioProcessors.includes(noiseCancellation.vendor)) {\n room._log.warn(noiseCancellation.vendor + \" is not supported in this room. disabling it permanently\");\n noiseCancellation.disablePermanently();\n }\n });\n}\nfunction rewriteLocalTrackIds(room, trackStats) {\n var localParticipantSignaling = room.localParticipant._signaling;\n return trackStats.reduce(function (trackStats, trackStat) {\n var publication = localParticipantSignaling.tracks.get(trackStat.trackId);\n var trackSender = localParticipantSignaling.getSender(publication);\n return trackSender\n ? [Object.assign({}, trackStat, { trackId: trackSender.id })].concat(trackStats)\n : trackStats;\n }, []);\n}\n/**\n * A {@link Room.SID} is a 34-character string starting with \"RM\"\n * that uniquely identifies a {@link Room}.\n * @type string\n * @typedef Room.SID\n */\n/**\n * The Dominant Speaker in the {@link Room} changed. Either the Dominant Speaker\n * is a new {@link RemoteParticipant} or the Dominant Speaker has been reset and\n * is now null.\n * @param {?RemoteParticipant} dominantSpeaker - The Dominant Speaker in the\n * {@link Room}, if any\n * @event Room#dominantSpeakerChanged\n */\n/**\n * Your {@link LocalParticipant} was disconnected from the {@link Room} and all\n * other {@link RemoteParticipant}s.\n * @param {Room} room - The {@link Room} your\n * {@link LocalParticipant} was disconnected from\n * @param {?TwilioError} error - Present when the {@link LocalParticipant} got\n * disconnected from the {@link Room} unexpectedly\n * @event Room#disconnected\n * @example\n * myRoom.on('disconnected', function(room, error) {\n * if (error) {\n * console.log('Unexpectedly disconnected:', error);\n * }\n * myRoom.localParticipant.tracks.forEach(function(track) {\n * track.stop();\n * track.detach();\n * });\n * });\n */\n/**\n * A {@link RemoteParticipant} joined the {@link Room}. In Large Group Rooms (Maximum\n * Participants greater than 50), this event is raised only when a {@link RemoteParticipant}\n * publishes at least one {@link LocalTrack}.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who joined\n * @event Room#participantConnected\n * @example\n * myRoom.on('participantConnected', function(participant) {\n * console.log(participant.identity + ' joined the Room');\n * });\n */\n/**\n * A {@link RemoteParticipant} left the {@link Room}. In Large Group Rooms (Maximum\n * Participants greater than 50), this event is raised only when a {@link RemoteParticipant}\n * unpublishes all its {@link LocalTrack}s.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who left\n * @event Room#participantDisconnected\n * @example\n * myRoom.on('participantDisconnected', function(participant) {\n * console.log(participant.identity + ' left the Room');\n * participant.tracks.forEach(function(track) {\n * track.detach().forEach(function(mediaElement) {\n * mediaElement.remove();\n * });\n * });\n * });\n */\n/**\n * A {@link RemoteParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} that has reconnected.\n * @event Room#participantReconnected\n * @example\n * myRoom.on('participantReconnected', participant => {\n * console.log(participant.identity + ' reconnected to the Room');\n * });\n */\n/**\n * A {@link RemoteParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} that is reconnecting.\n * @event Room#participantReconnecting\n * @example\n * myRoom.on('participantReconnecting', participant => {\n * console.log(participant.identity + ' is reconnecting to the Room');\n * });\n */\n/**\n * Your application successfully reconnected to the {@link Room}. When this\n * event is emitted, the {@link Room} is in state \"connected\".\n * @event Room#reconnected\n * @example\n * myRoom.on('reconnected', () => {\n * console.log('Reconnected!');\n * });\n */\n/**\n * Your application is reconnecting to the {@link Room}. This happens when there\n * is a disruption in your signaling connection and/or your media connection. When\n * this event is emitted, the {@link Room} is in state \"reconnecting\". If reconnecting\n * succeeds, the {@link Room} will emit a \"reconnected\" event.\n * @param {MediaConnectionError|SignalingConnectionDisconnectedError} error - A\n * {@link MediaConnectionError} if your application is reconnecting due to a\n * disruption in your media connection, or a {@link SignalingConnectionDisconnectedError}\n * if your application is reconnecting due to a disruption in your signaling connection\n * @event Room#reconnecting\n * @example\n * myRoom.on('reconnecting', error => {\n * if (error.code === 53001) {\n * console.log('Reconnecting your signaling connection!', error.message);\n * } else if (error.code === 53405) {\n * console.log('Reconnecting your media connection!', error.message);\n * }\n * });\n */\n/**\n * The {@link Room} is now being recorded\n * @event Room#recordingStarted\n */\n/**\n * The {@link Room} is no longer being recorded\n * @event Room#recordingStopped\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link VideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose dimensions changed\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteVideoTrack}'s dimensions changed\n * @event Room#trackDimensionsChanged\n */\n/**\n * A {@link RemoteTrack} was disabled by a {@link RemoteParticipant} in the {@link Room}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} that represents disabled {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n * disabled the {@link RemoteTrack}\n * @event Room#trackDisabled\n */\n/**\n * A {@link RemoteTrack} was enabled by a {@link RemoteParticipant} in the {@link Room}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} that represents enabled {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n * enabled the {@link RemoteTrack}\n * @event Room#trackEnabled\n */\n/**\n * A message was received over one of the {@link RemoteParticipant}'s\n * {@link RemoteDataTrack}'s.\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} over which the\n * message was received\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteDataTrack} received the message\n * @event Room#trackMessage\n */\n/**\n * A {@link RemoteTrack} was published by a {@link RemoteParticipant} after\n * connecting to the {@link Room}. This event is not emitted for\n * {@link RemoteTrack}s that were published while the {@link RemoteParticipant}\n * was connecting to the {@link Room}.\n * @event Room#trackPublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * which represents the published {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n * published the {@link RemoteTrack}\n * @example\n * function trackPublished(publication, participant) {\n * console.log(`RemoteParticipant ${participant.sid} published Track ${publication.trackSid}`);\n * }\n *\n * // Handle RemoteTracks published after connecting to the Room.\n * room.on('trackPublished', trackPublished);\n *\n * room.on('participantConnected', participant => {\n * // Handle RemoteTracks published while connecting to the Room.\n * participant.trackPublications.forEach(publication => trackPublished(publication, participant));\n * });\n */\n/**\n * One of a {@link RemoteParticipant}'s {@link RemoteTrack}s in the {@link Room} started.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that started\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteTrack} started\n * @event Room#trackStarted\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was subscribed\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteTrack} was subscribed\n * @event Room#trackSubscribed\n * @example\n * room.on('trackSubscribed', function(track, publication, participant) {\n * var participantView = document.getElementById('participant-view-' + participant.identity);\n * participantView.appendChild(track.attach());\n * });\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched off.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched off\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteTrack} was switched off\n * @event Room#trackSwitchedOff\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched on\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteTrack} was switched on\n * @event Room#trackSwitchedOn\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} could not be subscribed to.\n * @param {TwilioError} error - The reason the {@link RemoteTrack} could not be\n * subscribed to\n * @param {RemoteTrackPublication} publication - The\n * {@link RemoteTrackPublication} for the {@link RemoteTrack} that could not\n * be subscribed to\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteTrack} could not be subscribed to\n * @event Room#trackSubscriptionFailed\n */\n/**\n * The {@link RemoteTrack}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n * {@link Track.Priority};\n * @param {RemoteTrackPublication} publication - The\n * {@link RemoteTrackPublication} for the {@link RemoteTrack} that changed priority\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteTrack} changed priority\n * @event Room#trackPublishPriorityChanged\n */\n/**\n * A {@link RemoteTrack} was unpublished by a {@link RemoteParticipant} to the {@link Room}.\n * @event Room#trackUnpublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * which represents the unpublished {@link RemoteTrack}\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} who\n * unpublished the {@link RemoteTrack}\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was unsubscribed from.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was unsubscribed\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was unsubscribed from\n * @param {RemoteParticipant} participant - The {@link RemoteParticipant} whose\n * {@link RemoteTrack} was unsubscribed\n * @event Room#trackUnsubscribed\n * @example\n * room.on('trackUnsubscribed', function(track, publication, participant) {\n * track.detach().forEach(function(mediaElement) {\n * mediaElement.remove();\n * });\n * });\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s in the {@link Room} encountered a warning.\n * This event is only raised if you enabled warnings using notifyWarnings in ConnectOptions.\n * @param {string} name - The warning that was raised.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that encountered the warning.\n * @param {LocalParticipant} participant - The {@link LocalParticipant}\n * @event Room#trackWarning\n * @example\n * room.on('trackWarning', (name, publication, participant) => {\n * if (name === 'recording-media-lost') {\n * log(`LocalTrack ${publication.track.name} is not recording media.`,\n * name, publication, participant);\n *\n * // Wait a reasonable amount of time to clear the warning.\n * const timer = setTimeout(() => {\n * // If the warning is not cleared, you can manually\n * // reconnect to the room, or show a dialog to the user\n * }, 5000);\n *\n * room.once('trackWarningsCleared', (publication, participant) => {\n * log('LocalTrack warnings have cleared!',\n * publication, participant);\n * clearTimeout(timer);\n * });\n * }\n});\n */\n/**\n * One of the {@link LocalParticipant}'s {@link LocalTrackPublication}s in the {@link Room} cleared all warnings.\n * This event is only raised if you enabled warnings using notifyWarnings in ConnectOptions.\n * @param {LocalTrackPublication} publication - The {@link LocalTrackPublication} that cleared all warnings.\n * @param {LocalParticipant} participant - The {@link LocalParticipant}\n * @event Room#trackWarningsCleared\n */\nfunction connectParticipant(room, participantSignaling) {\n var log = room._log, clientTrackSwitchOffControl = room._clientTrackSwitchOffControl, contentPreferencesMode = room._contentPreferencesMode;\n var participant = new RemoteParticipant(participantSignaling, { log: log, clientTrackSwitchOffControl: clientTrackSwitchOffControl, contentPreferencesMode: contentPreferencesMode });\n log.info('A new RemoteParticipant connected:', participant);\n room._participants.set(participant.sid, participant);\n room.emit('participantConnected', participant);\n // Reemit Track and RemoteParticipant events.\n var eventListeners = [\n ['reconnected', 'participantReconnected'],\n ['reconnecting', 'participantReconnecting'],\n 'trackDimensionsChanged',\n 'trackDisabled',\n 'trackEnabled',\n 'trackMessage',\n 'trackPublished',\n 'trackPublishPriorityChanged',\n 'trackStarted',\n 'trackSubscribed',\n 'trackSubscriptionFailed',\n 'trackSwitchedOff',\n 'trackSwitchedOn',\n 'trackUnpublished',\n 'trackUnsubscribed'\n ].map(function (eventOrPair) {\n var _a = __read(Array.isArray(eventOrPair)\n ? eventOrPair\n : [eventOrPair, eventOrPair], 2), event = _a[0], participantEvent = _a[1];\n function reemit() {\n var args = [].slice.call(arguments);\n args.unshift(participantEvent);\n args.push(participant);\n room.emit.apply(room, __spreadArray([], __read(args)));\n }\n participant.on(event, reemit);\n return [event, reemit];\n });\n participant.once('disconnected', function participantDisconnected() {\n var dominantSpeaker = room.dominantSpeaker;\n log.info('RemoteParticipant disconnected:', participant);\n room._participants.delete(participant.sid);\n eventListeners.forEach(function (args) {\n participant.removeListener(args[0], args[1]);\n });\n room.emit('participantDisconnected', participant);\n if (participant === dominantSpeaker) {\n room.emit('dominantSpeakerChanged', room.dominantSpeaker);\n }\n });\n}\nfunction handleLocalParticipantEvents(room, localParticipant) {\n var events = ['trackWarning', 'trackWarningsCleared'].map(function (event) { return ({\n eventName: event,\n handler: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return room.emit.apply(room, __spreadArray([event], __read(__spreadArray(__spreadArray([], __read(args)), [localParticipant]))));\n },\n }); });\n events.forEach(function (_a) {\n var eventName = _a.eventName, handler = _a.handler;\n return localParticipant.on(eventName, handler);\n });\n room.once('disconnected', function () {\n return events.forEach(function (_a) {\n var eventName = _a.eventName, handler = _a.handler;\n return localParticipant.removeListener(eventName, handler);\n });\n });\n}\nfunction handleRecordingEvents(room, recording) {\n recording.on('updated', function updated() {\n var started = recording.isEnabled;\n room._log.info(\"Recording \" + (started ? 'started' : 'stopped'));\n room.emit(\"recording\" + (started ? 'Started' : 'Stopped'));\n });\n}\nfunction handleSignalingEvents(room, signaling) {\n var log = room._log;\n // Reemit RemoteParticipant events from the RoomSignaling.\n log.debug('Creating a new RemoteParticipant for each ParticipantSignaling '\n + 'in the RoomSignaling');\n signaling.participants.forEach(connectParticipant.bind(null, room));\n log.debug('Setting up RemoteParticipant creation for all subsequent '\n + 'ParticipantSignalings that connect to the RoomSignaling');\n signaling.on('participantConnected', connectParticipant.bind(null, room));\n signaling.on('dominantSpeakerChanged', function () { return room.emit('dominantSpeakerChanged', room.dominantSpeaker); });\n // Reemit state transition events from the RoomSignaling.\n signaling.on('stateChanged', function stateChanged(state, error) {\n log.info('Transitioned to state:', state);\n switch (state) {\n case 'disconnected':\n room.participants.forEach(function (participant) {\n participant._unsubscribeTracks();\n });\n room.emit(state, room, error);\n room.localParticipant.tracks.forEach(function (publication) {\n publication.unpublish();\n });\n signaling.removeListener('stateChanged', stateChanged);\n break;\n case 'reconnecting':\n // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n // Do not signal public events synchronously with lock held.\n setTimeout(function () { return room.emit('reconnecting', error); }, 0);\n break;\n default:\n // NOTE(mpatwardhan): `stateChanged` can get emitted with StateMachine locked.\n // Do not signal public events synchronously with lock held.\n setTimeout(function () { return room.emit('reconnected'); }, 0);\n }\n });\n}\nmodule.exports = Room;\n//# sourceMappingURL=room.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar Participant = require('./participant');\n/**\n * A {@link RemoteParticipant} represents a remote {@link Participant} in a\n * {@link Room}.\n * @extends Participant\n * @property {Map} audioTracks -\n * The {@link Participant}'s {@link RemoteAudioTrackPublication}s\n * @property {Map} dataTracks -\n * The {@link Participant}'s {@link RemoteDataTrackPublication}s\n * @property {Map} tracks -\n * The {@link Participant}'s {@link RemoteTrackPublication}s\n * @property {Map} videoTracks -\n * The {@link Participant}'s {@link RemoteVideoTrackPublication}s\n * @emits RemoteParticipant#reconnected\n * @emits RemoteParticipant#reconnecting\n * @emits RemoteParticipant#trackDimensionsChanged\n * @emits RemoteParticipant#trackDisabled\n * @emits RemoteParticipant#trackEnabled\n * @emits RemoteParticipant#trackMessage\n * @emits RemoteParticipant#trackPublished\n * @emits RemoteParticipant#trackPublishPriorityChanged\n * @emits RemoteParticipant#trackStarted\n * @emits RemoteParticipant#trackSubscribed\n * @emits RemoteParticipant#trackSubscriptionFailed\n * @emits RemoteParticipant#trackSwitchedOff\n * @emits RemoteParticipant#trackSwitchedOn\n * @emits RemoteParticipant#trackUnpublished\n * @emits RemoteParticipant#trackUnsubscribed\n */\nvar RemoteParticipant = /** @class */ (function (_super) {\n __extends(RemoteParticipant, _super);\n /**\n * Construct a {@link RemoteParticipant}.\n * @param {ParticipantSignaling} signaling\n * @param {object} [options]\n */\n function RemoteParticipant(signaling, options) {\n var _this = _super.call(this, signaling, options) || this;\n _this._handleTrackSignalingEvents();\n _this.once('disconnected', _this._unsubscribeTracks.bind(_this));\n return _this;\n }\n RemoteParticipant.prototype.toString = function () {\n return \"[RemoteParticipant #\" + this._instanceId + (this.sid ? \": \" + this.sid : '') + \"]\";\n };\n /**\n * @private\n * @param {RemoteTrack} remoteTrack\n * @param {RemoteTrackPublication} publication\n * @param {Track.ID} id\n * @returns {?RemoteTrack}\n */\n RemoteParticipant.prototype._addTrack = function (remoteTrack, publication, id) {\n if (!_super.prototype._addTrack.call(this, remoteTrack, id)) {\n return null;\n }\n publication._subscribed(remoteTrack);\n this.emit('trackSubscribed', remoteTrack, publication);\n return remoteTrack;\n };\n /**\n * @private\n * @param {RemoteTrackPublication} publication\n * @returns {?RemoteTrackPublication}\n */\n RemoteParticipant.prototype._addTrackPublication = function (publication) {\n var addedPublication = _super.prototype._addTrackPublication.call(this, publication);\n if (!addedPublication) {\n return null;\n }\n this.emit('trackPublished', addedPublication);\n return addedPublication;\n };\n /**\n * @private\n */\n RemoteParticipant.prototype._getTrackPublicationEvents = function () {\n return __spreadArray(__spreadArray([], __read(_super.prototype._getTrackPublicationEvents.call(this))), [\n ['subscriptionFailed', 'trackSubscriptionFailed'],\n ['trackDisabled', 'trackDisabled'],\n ['trackEnabled', 'trackEnabled'],\n ['publishPriorityChanged', 'trackPublishPriorityChanged'],\n ['trackSwitchedOff', 'trackSwitchedOff'],\n ['trackSwitchedOn', 'trackSwitchedOn']\n ]);\n };\n /**\n * @private\n */\n RemoteParticipant.prototype._unsubscribeTracks = function () {\n var _this = this;\n this.tracks.forEach(function (publication) {\n if (publication.isSubscribed) {\n var track = publication.track;\n publication._unsubscribe();\n _this.emit('trackUnsubscribed', track, publication);\n }\n });\n };\n /**\n * @private\n * @param {RemoteTrack} remoteTrack\n * @param {RemoteTrackPublication} publication\n * @param {Track.ID} id\n * @returns {?RemoteTrack}\n */\n RemoteParticipant.prototype._removeTrack = function (remoteTrack, publication, id) {\n var unsubscribedTrack = this._tracks.get(id);\n if (!unsubscribedTrack) {\n return null;\n }\n _super.prototype._removeTrack.call(this, unsubscribedTrack, id);\n publication._unsubscribe();\n this.emit('trackUnsubscribed', unsubscribedTrack, publication);\n return unsubscribedTrack;\n };\n /**\n * @private\n * @param {RemoteTrackPublication} publication\n * @returns {?RemoteTrackPublication}\n */\n RemoteParticipant.prototype._removeTrackPublication = function (publication) {\n this._signaling.clearTrackHint(publication.trackSid);\n var removedPublication = _super.prototype._removeTrackPublication.call(this, publication);\n if (!removedPublication) {\n return null;\n }\n this.emit('trackUnpublished', removedPublication);\n return removedPublication;\n };\n return RemoteParticipant;\n}(Participant));\n/**\n * The {@link RemoteParticipant} has reconnected to the {@link Room} after a signaling connection disruption.\n * @event RemoteParticipant#reconnected\n */\n/**\n * The {@link RemoteParticipant} is reconnecting to the {@link Room} after a signaling connection disruption.\n * @event RemoteParticipant#reconnecting\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link RemoteVideoTrack}'s dimensions changed.\n * @param {RemoteVideoTrack} track - The {@link RemoteVideoTrack} whose dimensions changed\n * @event RemoteParticipant#trackDimensionsChanged\n */\n/**\n * A {@link RemoteTrack} was disabled by the {@link RemoteParticipant}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} associated with the disabled {@link RemoteTrack}\n * @event RemoteParticipant#trackDisabled\n */\n/**\n * A {@link RemoteTrack} was enabled by the {@link RemoteParticipant}.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication} associated with the enabled {@link RemoteTrack}\n * @event RemoteParticipant#trackEnabled\n */\n/**\n * A message was received over one of the {@link RemoteParticipant}'s\n * {@link RemoteDataTrack}s.\n * @event RemoteParticipant#trackMessage\n * @param {string|ArrayBuffer} data\n * @param {RemoteDataTrack} track - The {@link RemoteDataTrack} over which the\n * message was received\n */\n/**\n * A {@link RemoteTrack} was published by the {@link RemoteParticipant} after\n * connecting to the {@link Room}. This event is not emitted for\n * {@link RemoteTrack}s that were published while the {@link RemoteParticipant}\n * was connecting to the {@link Room}.\n * @event RemoteParticipant#trackPublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * which represents the published {@link RemoteTrack}\n * @example\n * function trackPublished(publication) {\n * console.log(`Track ${publication.trackSid} was published`);\n * }\n *\n * room.on('participantConnected', participant => {\n * // Handle RemoteTracks published while connecting to the Room.\n * participant.trackPublications.forEach(trackPublished);\n *\n * // Handle RemoteTracks published after connecting to the Room.\n * participant.on('trackPublished', trackPublished);\n * });\n */\n/**\n * One of the {@link RemoteParticipant}'s {@link RemoteTrack}s started.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that started\n * @event RemoteParticipant#trackStarted\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was subscribed to\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was subscribed to\n * @event RemoteParticipant#trackSubscribed\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} could not be subscribed to.\n * @param {TwilioError} error - The reason the {@link RemoteTrack} could not be\n * subscribed to\n * @param {RemoteTrackPublication} publication - The\n * {@link RemoteTrackPublication} for the {@link RemoteTrack} that could not\n * be subscribed to\n * @event RemoteParticipant#trackSubscriptionFailed\n */\n/**\n * The {@link RemoteTrackPublication}'s publish {@link Track.Priority} was changed by the\n * {@link RemoteParticipant}.\n * @param {Track.Priority} priority - the {@link RemoteTrack}'s new publish\n * {@link Track.Priority};\n * @param {RemoteTrackPublication} publication - The\n * {@link RemoteTrackPublication} for the {@link RemoteTrack} that changed priority\n * @event RemoteParticipant#trackPublishPriorityChanged\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was subscribed to.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched off\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was switched off\n * @event RemoteParticipant#trackSwitchedOff\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was switched on.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was switched on.\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was switched on\n * @event RemoteParticipant#trackSwitchedOn\n */\n/**\n * A {@link RemoteTrack} was unpublished by the {@link RemoteParticipant}.\n * @event RemoteParticipant#trackUnpublished\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * which represents the unpublished {@link RemoteTrack}\n */\n/**\n * A {@link RemoteParticipant}'s {@link RemoteTrack} was unsubscribed from.\n * @param {RemoteTrack} track - The {@link RemoteTrack} that was unsubscribed from\n * @param {RemoteTrackPublication} publication - The {@link RemoteTrackPublication}\n * for the {@link RemoteTrack} that was unsubscribed from\n * @event RemoteParticipant#trackUnsubscribed\n */\nmodule.exports = RemoteParticipant;\n//# sourceMappingURL=remoteparticipant.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LocalTrackStats = require('./localtrackstats');\n/**\n * Statistics for a {@link LocalAudioTrack}.\n * @extends LocalTrackStats\n * @property {?AudioLevel} audioLevel - Input {@link AudioLevel}\n * @property {?number} jitter - Audio jitter in milliseconds\n */\nvar LocalAudioTrackStats = /** @class */ (function (_super) {\n __extends(LocalAudioTrackStats, _super);\n /**\n * @param {string} trackId - {@link LocalAudioTrack} ID\n * @param {StandardizedTrackStatsReport} statsReport\n * @param {boolean} prepareForInsights\n */\n function LocalAudioTrackStats(trackId, statsReport, prepareForInsights) {\n var _this = _super.call(this, trackId, statsReport, prepareForInsights) || this;\n Object.defineProperties(_this, {\n audioLevel: {\n value: typeof statsReport.audioInputLevel === 'number'\n ? statsReport.audioInputLevel\n : null,\n enumerable: true\n },\n jitter: {\n value: typeof statsReport.jitter === 'number'\n ? statsReport.jitter\n : null,\n enumerable: true\n }\n });\n return _this;\n }\n return LocalAudioTrackStats;\n}(LocalTrackStats));\n/**\n * The maximum absolute amplitude of a set of audio samples in the\n * range of 0 to 32767 inclusive.\n * @typedef {number} AudioLevel\n */\nmodule.exports = LocalAudioTrackStats;\n//# sourceMappingURL=localaudiotrackstats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LocalTrackStats = require('./localtrackstats');\n/**\n * Statistics for a {@link LocalVideoTrack}.\n * @extends LocalTrackStats\n * @property {?VideoTrack#Dimensions} captureDimensions - Video capture resolution\n * @property {?VideoTrack#Dimensions} dimensions - Video encoding resolution\n * @property {?number} captureFrameRate - Video capture frame rate\n * @property {?number} frameRate - Video encoding frame rate\n */\nvar LocalVideoTrackStats = /** @class */ (function (_super) {\n __extends(LocalVideoTrackStats, _super);\n /**\n * @param {string} trackId - {@link LocalVideoTrack} ID\n * @param {StandardizedTrackStatsReport} statsReport\n * @param {boolean} prepareForInsights\n */\n function LocalVideoTrackStats(trackId, statsReport, prepareForInsights) {\n var _this = _super.call(this, trackId, statsReport, prepareForInsights) || this;\n var captureDimensions = null;\n if (typeof statsReport.frameWidthInput === 'number' &&\n typeof statsReport.frameHeightInput === 'number') {\n captureDimensions = {};\n Object.defineProperties(captureDimensions, {\n width: {\n value: statsReport.frameWidthInput,\n enumerable: true\n },\n height: {\n value: statsReport.frameHeightInput,\n enumerable: true\n }\n });\n }\n var dimensions = null;\n if (typeof statsReport.frameWidthSent === 'number' &&\n typeof statsReport.frameHeightSent === 'number') {\n dimensions = {};\n Object.defineProperties(dimensions, {\n width: {\n value: statsReport.frameWidthSent,\n enumerable: true\n },\n height: {\n value: statsReport.frameHeightSent,\n enumerable: true\n }\n });\n }\n Object.defineProperties(_this, {\n captureDimensions: {\n value: captureDimensions,\n enumerable: true\n },\n dimensions: {\n value: dimensions,\n enumerable: true\n },\n captureFrameRate: {\n value: typeof statsReport.frameRateInput === 'number'\n ? statsReport.frameRateInput\n : null,\n enumerable: true\n },\n frameRate: {\n value: typeof statsReport.frameRateSent === 'number'\n ? statsReport.frameRateSent\n : null,\n enumerable: true\n }\n });\n return _this;\n }\n return LocalVideoTrackStats;\n}(LocalTrackStats));\nmodule.exports = LocalVideoTrackStats;\n//# sourceMappingURL=localvideotrackstats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RemoteTrackStats = require('./remotetrackstats');\n/**\n * Statistics for an {@link AudioTrack}.\n * @extends RemoteTrackStats\n * @property {?AudioLevel} audioLevel - Output {@link AudioLevel}\n * @property {?number} jitter - Audio jitter in milliseconds\n */\nvar RemoteAudioTrackStats = /** @class */ (function (_super) {\n __extends(RemoteAudioTrackStats, _super);\n /**\n * @param {string} trackId - {@link AudioTrack} ID\n * @param {StandardizedTrackStatsReport} statsReport\n */\n function RemoteAudioTrackStats(trackId, statsReport) {\n var _this = _super.call(this, trackId, statsReport) || this;\n Object.defineProperties(_this, {\n audioLevel: {\n value: typeof statsReport.audioOutputLevel === 'number'\n ? statsReport.audioOutputLevel\n : null,\n enumerable: true\n },\n jitter: {\n value: typeof statsReport.jitter === 'number'\n ? statsReport.jitter\n : null,\n enumerable: true\n }\n });\n return _this;\n }\n return RemoteAudioTrackStats;\n}(RemoteTrackStats));\nmodule.exports = RemoteAudioTrackStats;\n//# sourceMappingURL=remoteaudiotrackstats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RemoteTrackStats = require('./remotetrackstats');\n/**\n * Statistics for a {@link VideoTrack}.\n * @extends RemoteTrackStats\n * @property {?VideoTrack#Dimensions} dimensions - Received video resolution\n * @property {?number} frameRate - Received video frame rate\n */\nvar RemoteVideoTrackStats = /** @class */ (function (_super) {\n __extends(RemoteVideoTrackStats, _super);\n /**\n * @param {string} trackId - {@link VideoTrack} ID\n * @param {StandardizedTrackStatsReport} statsReport\n */\n function RemoteVideoTrackStats(trackId, statsReport) {\n var _this = _super.call(this, trackId, statsReport) || this;\n var dimensions = null;\n if (typeof statsReport.frameWidthReceived === 'number' &&\n typeof statsReport.frameHeightReceived === 'number') {\n dimensions = {};\n Object.defineProperties(dimensions, {\n width: {\n value: statsReport.frameWidthReceived,\n enumerable: true\n },\n height: {\n value: statsReport.frameHeightReceived,\n enumerable: true\n }\n });\n }\n Object.defineProperties(_this, {\n dimensions: {\n value: dimensions,\n enumerable: true\n },\n frameRate: {\n value: typeof statsReport.frameRateReceived === 'number'\n ? statsReport.frameRateReceived\n : null,\n enumerable: true\n }\n });\n return _this;\n }\n return RemoteVideoTrackStats;\n}(RemoteTrackStats));\nmodule.exports = RemoteVideoTrackStats;\n//# sourceMappingURL=remotevideotrackstats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar defaultCreateCancelableRoomSignalingPromise = require('./cancelableroomsignalingpromise');\nvar LocalParticipantV2 = require('./localparticipant');\nvar Signaling = require('../');\n/**\n * {@link SignalingV2} implements version 2 of our signaling protocol.\n * @extends Signaling\n */\nvar SignalingV2 = /** @class */ (function (_super) {\n __extends(SignalingV2, _super);\n /**\n * Construct {@link SignalingV2}.\n * @param {string} wsServer\n * @param {?object} [options={}]\n */\n function SignalingV2(wsServer, options) {\n var _this = this;\n /* eslint new-cap:0 */\n options = Object.assign({\n createCancelableRoomSignalingPromise: defaultCreateCancelableRoomSignalingPromise\n }, options);\n _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _createCancelableRoomSignalingPromise: {\n value: options.createCancelableRoomSignalingPromise\n },\n _options: {\n value: options\n },\n _wsServer: {\n value: wsServer\n }\n });\n return _this;\n }\n /**\n * @private\n */\n SignalingV2.prototype._connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n options = Object.assign({}, this._options, options);\n return this._createCancelableRoomSignalingPromise.bind(null, token, this._wsServer, localParticipant, encodingParameters, preferredCodecs, options);\n };\n SignalingV2.prototype.createLocalParticipantSignaling = function (encodingParameters, networkQualityConfiguration) {\n return new LocalParticipantV2(encodingParameters, networkQualityConfiguration);\n };\n return SignalingV2;\n}(Signaling));\nmodule.exports = SignalingV2;\n//# sourceMappingURL=index.js.map","'use strict';\nvar CancelablePromise = require('../../util/cancelablepromise');\nvar DefaultPeerConnectionManager = require('./peerconnectionmanager');\nvar DefaultRoomV2 = require('./room');\nvar DefaultTransport = require('./twilioconnectiontransport');\nvar _a = require('../../util/twilio-video-errors'), SignalingConnectionDisconnectedError = _a.SignalingConnectionDisconnectedError, SignalingIncomingMessageInvalidError = _a.SignalingIncomingMessageInvalidError;\nvar _b = require('../../util'), flatMap = _b.flatMap, createRoomConnectEventPayload = _b.createRoomConnectEventPayload;\nfunction createCancelableRoomSignalingPromise(token, wsServer, localParticipant, encodingParameters, preferredCodecs, options) {\n options = Object.assign({\n PeerConnectionManager: DefaultPeerConnectionManager,\n RoomV2: DefaultRoomV2,\n Transport: DefaultTransport\n }, options);\n var adaptiveSimulcast = preferredCodecs.video[0] && preferredCodecs.video[0].adaptiveSimulcast === true;\n var PeerConnectionManager = options.PeerConnectionManager, RoomV2 = options.RoomV2, Transport = options.Transport, iceServers = options.iceServers, log = options.log;\n var peerConnectionManager = new PeerConnectionManager(encodingParameters, preferredCodecs, options);\n var trackSenders = flatMap(localParticipant.tracks, function (trackV2) { return [trackV2.trackTransceiver]; });\n peerConnectionManager.setTrackSenders(trackSenders);\n var cancellationError = new Error('Canceled');\n var transport;\n var cancelablePromise = new CancelablePromise(function (resolve, reject, isCanceled) {\n var onIced = function (iceServers) {\n if (isCanceled()) {\n reject(cancellationError);\n return Promise.reject(cancellationError);\n }\n log.debug('Got ICE servers:', iceServers);\n options.iceServers = iceServers;\n peerConnectionManager.setConfiguration(options);\n return peerConnectionManager.createAndOffer().then(function () {\n if (isCanceled()) {\n reject(cancellationError);\n throw cancellationError;\n }\n log.debug('createAndOffer() succeeded.');\n // NOTE(mmalavalli): PeerConnectionManager#createAndOffer() queues the\n // initial offer in the event queue for the 'description' event. So,\n // we are dequeueing to prevent the spurious 'update' message sent by\n // the client after connecting to a room.\n peerConnectionManager.dequeue('description');\n }).catch(function (error) {\n log.error('createAndOffer() failed:', error);\n reject(error);\n throw error;\n });\n };\n var automaticSubscription = options.automaticSubscription, bandwidthProfile = options.bandwidthProfile, dominantSpeaker = options.dominantSpeaker, environment = options.environment, eventObserver = options.eventObserver, loggerName = options.loggerName, logLevel = options.logLevel, name = options.name, networkMonitor = options.networkMonitor, networkQuality = options.networkQuality, notifyWarnings = options.notifyWarnings, realm = options.realm, sdpSemantics = options.sdpSemantics;\n // decide which msp channels to request\n // dominantSpeaker, networkQuality\n var trackPriority = !!bandwidthProfile;\n var trackSwitchOff = !!bandwidthProfile;\n var renderHints = !!bandwidthProfile &&\n (options.clientTrackSwitchOffControl !== 'disabled' || options.contentPreferencesMode !== 'disabled');\n var transportOptions = Object.assign({\n adaptiveSimulcast: adaptiveSimulcast,\n automaticSubscription: automaticSubscription,\n dominantSpeaker: dominantSpeaker,\n environment: environment,\n eventObserver: eventObserver,\n loggerName: loggerName,\n logLevel: logLevel,\n networkMonitor: networkMonitor,\n networkQuality: networkQuality,\n notifyWarnings: notifyWarnings,\n iceServers: iceServers,\n onIced: onIced,\n realm: realm,\n renderHints: renderHints,\n sdpSemantics: sdpSemantics,\n trackPriority: trackPriority,\n trackSwitchOff: trackSwitchOff\n }, bandwidthProfile ? {\n bandwidthProfile: bandwidthProfile\n } : {});\n transport = new Transport(name, token, localParticipant, peerConnectionManager, wsServer, transportOptions);\n var connectEventPayload = createRoomConnectEventPayload(options);\n eventObserver.emit('event', connectEventPayload);\n transport.once('connected', function (initialState) {\n log.debug('Transport connected:', initialState);\n if (isCanceled()) {\n reject(cancellationError);\n return;\n }\n var localParticipantState = initialState.participant;\n if (!localParticipantState) {\n reject(new SignalingIncomingMessageInvalidError());\n return;\n }\n resolve(new RoomV2(localParticipant, initialState, transport, peerConnectionManager, options));\n });\n transport.once('stateChanged', function (state, error) {\n if (state === 'disconnected') {\n transport = null;\n reject(error || new SignalingConnectionDisconnectedError());\n }\n else {\n log.debug('Transport state changed:', state);\n }\n });\n }, function () {\n if (transport) {\n transport.disconnect();\n transport = null;\n }\n });\n cancelablePromise.catch(function () {\n if (transport) {\n transport.disconnect();\n transport = null;\n }\n peerConnectionManager.close();\n });\n return cancelablePromise;\n}\nmodule.exports = createCancelableRoomSignalingPromise;\n//# sourceMappingURL=cancelableroomsignalingpromise.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar guessBrowser = require('../../webrtc/util').guessBrowser;\nvar PeerConnectionV2 = require('./peerconnection');\nvar MediaTrackSender = require('../../media/track/sender');\nvar QueueingEventEmitter = require('../../queueingeventemitter');\nvar util = require('../../util');\nvar MediaConnectionError = require('../../util/twilio-video-errors').MediaConnectionError;\nvar isFirefox = guessBrowser() === 'firefox';\n/**\n * {@link PeerConnectionManager} manages multiple {@link PeerConnectionV2}s.\n * @extends QueueingEventEmitter\n * @emits PeerConnectionManager#candidates\n * @emits PeerConnectionManager#connectionStateChanged\n * @emits PeerConnectionManager#description\n * @emits PeerConnectionManager#iceConnectionStateChanged\n * @emits PeerConnectionManager#trackAdded\n */\nvar PeerConnectionManager = /** @class */ (function (_super) {\n __extends(PeerConnectionManager, _super);\n /**\n * Construct {@link PeerConnectionManager}.\n * @param {EncodingParametersImpl} encodingParameters\n * @param {PreferredCodecs} preferredCodecs\n * @param {object} options\n */\n function PeerConnectionManager(encodingParameters, preferredCodecs, options) {\n var _this = _super.call(this) || this;\n options = Object.assign({\n audioContextFactory: isFirefox\n ? require('../../webaudio/audiocontext')\n : null,\n PeerConnectionV2: PeerConnectionV2\n }, options);\n var audioContext = options.audioContextFactory\n ? options.audioContextFactory.getOrCreate(_this)\n : null;\n // NOTE(mroberts): If we're using an AudioContext, we don't need to specify\n // `offerToReceiveAudio` in RTCOfferOptions.\n var offerOptions = audioContext\n ? { offerToReceiveVideo: true }\n : { offerToReceiveAudio: true, offerToReceiveVideo: true };\n Object.defineProperties(_this, {\n _audioContextFactory: {\n value: options.audioContextFactory\n },\n _closedPeerConnectionIds: {\n value: new Set()\n },\n _configuration: {\n writable: true,\n value: null\n },\n _configurationDeferred: {\n writable: true,\n value: util.defer()\n },\n _connectionState: {\n value: 'new',\n writable: true\n },\n _dummyAudioTrackSender: {\n value: audioContext\n ? new MediaTrackSender(createDummyAudioMediaStreamTrack(audioContext))\n : null\n },\n _encodingParameters: {\n value: encodingParameters\n },\n _iceConnectionState: {\n writable: true,\n value: 'new'\n },\n _dataTrackSenders: {\n writable: true,\n value: new Set()\n },\n _lastConnectionState: {\n value: 'new',\n writable: true\n },\n _lastIceConnectionState: {\n writable: true,\n value: 'new'\n },\n _mediaTrackSenders: {\n writable: true,\n value: new Set()\n },\n _offerOptions: {\n value: offerOptions\n },\n _peerConnections: {\n value: new Map()\n },\n _preferredCodecs: {\n value: preferredCodecs\n },\n _sessionTimeout: {\n value: null,\n writable: true\n },\n _PeerConnectionV2: {\n value: options.PeerConnectionV2\n }\n });\n return _this;\n }\n PeerConnectionManager.prototype.setEffectiveAdaptiveSimulcast = function (effectiveAdaptiveSimulcast) {\n this._peerConnections.forEach(function (pc) { return pc.setEffectiveAdaptiveSimulcast(effectiveAdaptiveSimulcast); });\n this._preferredCodecs.video.forEach(function (cs) {\n if ('adaptiveSimulcast' in cs) {\n cs.adaptiveSimulcast = effectiveAdaptiveSimulcast;\n }\n });\n };\n Object.defineProperty(PeerConnectionManager.prototype, \"connectionState\", {\n /**\n * A summarized RTCPeerConnectionState across all the\n * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n * @property {RTCPeerConnectionState}\n */\n get: function () {\n return this._connectionState;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PeerConnectionManager.prototype, \"iceConnectionState\", {\n /**\n * A summarized RTCIceConnectionState across all the\n * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n * @property {RTCIceConnectionState}\n */\n get: function () {\n return this._iceConnectionState;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Close the {@link PeerConnectionV2}s which are no longer relevant.\n * @param {Array} peerConnectionStates\n * @returns {this}\n */\n PeerConnectionManager.prototype._closeAbsentPeerConnections = function (peerConnectionStates) {\n var peerConnectionIds = new Set(peerConnectionStates.map(function (peerConnectionState) { return peerConnectionState.id; }));\n this._peerConnections.forEach(function (peerConnection) {\n if (!peerConnectionIds.has(peerConnection.id)) {\n peerConnection._close();\n }\n });\n return this;\n };\n /**\n * Get the {@link PeerConnectionManager}'s configuration.\n * @private\n * @returns {Promise}\n */\n PeerConnectionManager.prototype._getConfiguration = function () {\n return this._configurationDeferred.promise;\n };\n /**\n * Get or create a {@link PeerConnectionV2}.\n * @private\n * @param {string} id\n * @param {object} [configuration]\n * @returns {PeerConnectionV2}\n */\n PeerConnectionManager.prototype._getOrCreate = function (id, configuration) {\n var _this = this;\n var self = this;\n var peerConnection = this._peerConnections.get(id);\n if (!peerConnection) {\n var PeerConnectionV2_1 = this._PeerConnectionV2;\n var options = Object.assign({\n dummyAudioMediaStreamTrack: this._dummyAudioTrackSender\n ? this._dummyAudioTrackSender.track\n : null,\n offerOptions: this._offerOptions\n }, this._sessionTimeout ? {\n sessionTimeout: this._sessionTimeout\n } : {}, configuration);\n try {\n peerConnection = new PeerConnectionV2_1(id, this._encodingParameters, this._preferredCodecs, options);\n }\n catch (e) {\n throw new MediaConnectionError();\n }\n this._peerConnections.set(peerConnection.id, peerConnection);\n peerConnection.on('candidates', this.queue.bind(this, 'candidates'));\n peerConnection.on('description', this.queue.bind(this, 'description'));\n peerConnection.on('trackAdded', this.queue.bind(this, 'trackAdded'));\n peerConnection.on('stateChanged', function stateChanged(state) {\n if (state === 'closed') {\n peerConnection.removeListener('stateChanged', stateChanged);\n self._dataTrackSenders.forEach(function (sender) { return peerConnection.removeDataTrackSender(sender); });\n self._mediaTrackSenders.forEach(function (sender) { return peerConnection.removeMediaTrackSender(sender); });\n self._peerConnections.delete(peerConnection.id);\n self._closedPeerConnectionIds.add(peerConnection.id);\n updateConnectionState(self);\n updateIceConnectionState(self);\n }\n });\n peerConnection.on('connectionStateChanged', function () { return updateConnectionState(_this); });\n peerConnection.on('iceConnectionStateChanged', function () { return updateIceConnectionState(_this); });\n this._dataTrackSenders.forEach(peerConnection.addDataTrackSender, peerConnection);\n this._mediaTrackSenders.forEach(peerConnection.addMediaTrackSender, peerConnection);\n updateIceConnectionState(this);\n }\n return peerConnection;\n };\n /**\n * Close all the {@link PeerConnectionV2}s in this {@link PeerConnectionManager}.\n * @returns {this}\n */\n PeerConnectionManager.prototype.close = function () {\n this._peerConnections.forEach(function (peerConnection) {\n peerConnection.close();\n });\n if (this._dummyAudioTrackSender) {\n this._dummyAudioTrackSender.stop();\n }\n if (this._audioContextFactory) {\n this._audioContextFactory.release(this);\n }\n updateIceConnectionState(this);\n return this;\n };\n /**\n * Create a new {@link PeerConnectionV2} on this {@link PeerConnectionManager}.\n * Then, create a new offer with the newly-created {@link PeerConnectionV2}.\n * @return {Promise}\n */\n PeerConnectionManager.prototype.createAndOffer = function () {\n var _this = this;\n return this._getConfiguration().then(function (configuration) {\n var id;\n do {\n id = util.makeUUID();\n } while (_this._peerConnections.has(id));\n return _this._getOrCreate(id, configuration);\n }).then(function (peerConnection) {\n return peerConnection.offer();\n }).then(function () {\n return _this;\n });\n };\n /**\n * Get the {@link DataTrackReceiver}s and {@link MediaTrackReceiver}s of all\n * the {@link PeerConnectionV2}s.\n * @returns {Array} trackReceivers\n */\n PeerConnectionManager.prototype.getTrackReceivers = function () {\n return util.flatMap(this._peerConnections, function (peerConnection) { return peerConnection.getTrackReceivers(); });\n };\n /**\n * Get the states of all {@link PeerConnectionV2}s.\n * @returns {Array}\n */\n PeerConnectionManager.prototype.getStates = function () {\n var peerConnectionStates = [];\n this._peerConnections.forEach(function (peerConnection) {\n var peerConnectionState = peerConnection.getState();\n if (peerConnectionState) {\n peerConnectionStates.push(peerConnectionState);\n }\n });\n return peerConnectionStates;\n };\n /**\n * Set the {@link PeerConnectionManager}'s configuration.\n * @param {object} configuration\n * @returns {this}\n */\n PeerConnectionManager.prototype.setConfiguration = function (configuration) {\n if (this._configuration) {\n this._configurationDeferred = util.defer();\n this._peerConnections.forEach(function (peerConnection) {\n peerConnection.setConfiguration(configuration);\n });\n }\n this._configuration = configuration;\n this._configurationDeferred.resolve(configuration);\n return this;\n };\n /**\n * Set the ICE reconnect timeout period for all {@link PeerConnectionV2}s.\n * @param {number} period - Period in milliseconds.\n * @returns {this}\n */\n PeerConnectionManager.prototype.setIceReconnectTimeout = function (period) {\n if (this._sessionTimeout === null) {\n this._peerConnections.forEach(function (peerConnection) {\n peerConnection.setIceReconnectTimeout(period);\n });\n this._sessionTimeout = period;\n }\n return this;\n };\n /**\n * Set the {@link DataTrackSender}s and {@link MediaTrackSender}s on the\n * {@link PeerConnectionManager}'s underlying {@link PeerConnectionV2}s.\n * @param {Array} trackSenders\n * @returns {this}\n */\n PeerConnectionManager.prototype.setTrackSenders = function (trackSenders) {\n var dataTrackSenders = new Set(trackSenders.filter(function (trackSender) { return trackSender.kind === 'data'; }));\n var mediaTrackSenders = new Set(trackSenders\n .filter(function (trackSender) { return trackSender && (trackSender.kind === 'audio' || trackSender.kind === 'video'); }));\n var changes = getTrackSenderChanges(this, dataTrackSenders, mediaTrackSenders);\n this._dataTrackSenders = dataTrackSenders;\n this._mediaTrackSenders = mediaTrackSenders;\n applyTrackSenderChanges(this, changes);\n return this;\n };\n /**\n * Update the {@link PeerConnectionManager}.\n * @param {Array} peerConnectionStates\n * @param {boolean} [synced=false]\n * @returns {Promise}\n */\n PeerConnectionManager.prototype.update = function (peerConnectionStates, synced) {\n var _this = this;\n if (synced === void 0) { synced = false; }\n if (synced) {\n this._closeAbsentPeerConnections(peerConnectionStates);\n }\n return this._getConfiguration().then(function (configuration) {\n return Promise.all(peerConnectionStates.map(function (peerConnectionState) {\n if (_this._closedPeerConnectionIds.has(peerConnectionState.id)) {\n return null;\n }\n var peerConnection = _this._getOrCreate(peerConnectionState.id, configuration);\n return peerConnection.update(peerConnectionState);\n }));\n }).then(function () {\n return _this;\n });\n };\n /**\n * Get the {@link PeerConnectionManager}'s media statistics.\n * @returns {Promise.>}\n */\n PeerConnectionManager.prototype.getStats = function () {\n var peerConnections = Array.from(this._peerConnections.values());\n return Promise.all(peerConnections.map(function (peerConnection) { return peerConnection.getStats().then(function (response) { return [\n peerConnection.id,\n response\n ]; }); })).then(function (responses) { return new Map(responses); });\n };\n return PeerConnectionManager;\n}(QueueingEventEmitter));\n/**\n * Create a dummy audio MediaStreamTrack with the given AudioContext.\n * @private\n * @param {AudioContext} audioContext\n * @return {MediaStreamTrack}\n */\nfunction createDummyAudioMediaStreamTrack(audioContext) {\n var mediaStreamDestination = audioContext.createMediaStreamDestination();\n return mediaStreamDestination.stream.getAudioTracks()[0];\n}\n/**\n * @event {PeerConnectionManager#candidates}\n * @param {object} candidates\n */\n/**\n * @event {PeerConnectionManager#connectionStateChanged}\n */\n/**\n * @event {PeerConnectionManager#description}\n * @param {object} description\n */\n/**\n * @event {PeerConnectionManager#iceConnectionStateChanged}\n */\n/**\n * @event {PeerConnectionManager#trackAdded}\n * @param {MediaStreamTrack|DataTrackReceiver} mediaStreamTrackOrDataTrackReceiver\n */\n/**\n * Apply {@link TrackSenderChanges}.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {TrackSenderChanges} changes\n * @returns {void}\n */\nfunction applyTrackSenderChanges(peerConnectionManager, changes) {\n if (changes.data.add.size\n || changes.data.remove.size\n || changes.media.add.size\n || changes.media.remove.size) {\n peerConnectionManager._peerConnections.forEach(function (peerConnection) {\n changes.data.remove.forEach(peerConnection.removeDataTrackSender, peerConnection);\n changes.media.remove.forEach(peerConnection.removeMediaTrackSender, peerConnection);\n changes.data.add.forEach(peerConnection.addDataTrackSender, peerConnection);\n changes.media.add.forEach(peerConnection.addMediaTrackSender, peerConnection);\n if (changes.media.add.size\n || changes.media.remove.size\n || (changes.data.add.size && !peerConnection.isApplicationSectionNegotiated)) {\n peerConnection.offer();\n }\n });\n }\n}\n/**\n * @interface DataTrackSenderChanges\n * @property {Set} add\n * @property {Set} remove\n */\n/**\n * Get the {@Link DataTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array} dataTrackSenders\n * @returns {DataTrackSenderChanges} changes\n */\nfunction getDataTrackSenderChanges(peerConnectionManager, dataTrackSenders) {\n var dataTrackSendersToAdd = util.difference(dataTrackSenders, peerConnectionManager._dataTrackSenders);\n var dataTrackSendersToRemove = util.difference(peerConnectionManager._dataTrackSenders, dataTrackSenders);\n return {\n add: dataTrackSendersToAdd,\n remove: dataTrackSendersToRemove\n };\n}\n/**\n * @interface TrackSenderChanges\n * @property {DataTrackSenderChanges} data\n * @property {MediaTrackSenderChanges} media\n */\n/**\n * Get {@link DataTrackSender} and {@link MediaTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array} dataTrackSenders\n * @param {Array} mediaTrackSenders\n * @returns {TrackSenderChanges} changes\n */\nfunction getTrackSenderChanges(peerConnectionManager, dataTrackSenders, mediaTrackSenders) {\n return {\n data: getDataTrackSenderChanges(peerConnectionManager, dataTrackSenders),\n media: getMediaTrackSenderChanges(peerConnectionManager, mediaTrackSenders)\n };\n}\n/**\n * @interface MediaTrackSenderChanges\n * @property {Set} add\n * @property {Set} remove\n */\n/**\n * Get the {@link MediaTrackSender} changes.\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {Array} mediaTrackSenders\n * @returns {MediaTrackSenderChanges} changes\n */\nfunction getMediaTrackSenderChanges(peerConnectionManager, mediaTrackSenders) {\n var mediaTrackSendersToAdd = util.difference(mediaTrackSenders, peerConnectionManager._mediaTrackSenders);\n var mediaTrackSendersToRemove = util.difference(peerConnectionManager._mediaTrackSenders, mediaTrackSenders);\n return {\n add: mediaTrackSendersToAdd,\n remove: mediaTrackSendersToRemove\n };\n}\n/**\n * This object maps RTCIceConnectionState and RTCPeerConnectionState values to a \"rank\".\n */\nvar toRank = {\n new: 0,\n checking: 1,\n connecting: 2,\n connected: 3,\n completed: 4,\n disconnected: -1,\n failed: -2,\n closed: -3\n};\n/**\n * This object maps \"rank\" back to RTCIceConnectionState or RTCPeerConnectionState values.\n */\nvar fromRank;\n/**\n * `Object.keys` is not supported in older browsers, so we can't just\n * synchronously call it in this module; we need to defer invoking it until we\n * know we're in a modern environment (i.e., anything that supports WebRTC).\n * @returns {object} fromRank\n */\nfunction createFromRank() {\n return Object.keys(toRank).reduce(function (fromRank, state) {\n var _a;\n return Object.assign(fromRank, (_a = {}, _a[toRank[state]] = state, _a));\n }, {});\n}\n/**\n * Summarize RTCIceConnectionStates or RTCPeerConnectionStates.\n * @param {Array|Array} states\n * @returns {RTCIceConnectionState|RTCPeerConnectionState} summary\n */\nfunction summarizeIceOrPeerConnectionStates(states) {\n if (!states.length) {\n return 'new';\n }\n fromRank = fromRank || createFromRank();\n return states.reduce(function (state1, state2) {\n return fromRank[Math.max(toRank[state1], toRank[state2])];\n });\n}\n/**\n * Update the {@link PeerConnectionManager}'s `iceConnectionState`, and emit an\n * \"iceConnectionStateChanged\" event, if necessary.\n * @param {PeerConnectionManager} pcm\n * @returns {void}\n */\nfunction updateIceConnectionState(pcm) {\n pcm._lastIceConnectionState = pcm.iceConnectionState;\n pcm._iceConnectionState = summarizeIceOrPeerConnectionStates(__spreadArray([], __read(pcm._peerConnections.values())).map(function (pcv2) { return pcv2.iceConnectionState; }));\n if (pcm.iceConnectionState !== pcm._lastIceConnectionState) {\n pcm.emit('iceConnectionStateChanged');\n }\n}\n/**\n * Update the {@link PeerConnectionManager}'s `connectionState`, and emit a\n * \"connectionStateChanged\" event, if necessary.\n * @param {PeerConnectionManager} pcm\n * @returns {void}\n */\nfunction updateConnectionState(pcm) {\n pcm._lastConnectionState = pcm.connectionState;\n pcm._connectionState = summarizeIceOrPeerConnectionStates(__spreadArray([], __read(pcm._peerConnections.values())).map(function (pcv2) { return pcv2.connectionState; }));\n if (pcm.connectionState !== pcm._lastConnectionState) {\n pcm.emit('connectionStateChanged');\n }\n}\nmodule.exports = PeerConnectionManager;\n//# sourceMappingURL=peerconnectionmanager.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar DefaultBackoff = require('../../util/backoff');\nvar _a = require('../../webrtc'), DefaultRTCIceCandidate = _a.RTCIceCandidate, DefaultRTCPeerConnection = _a.RTCPeerConnection, DefaultRTCSessionDescription = _a.RTCSessionDescription, getStatistics = _a.getStats;\nvar util = require('../../webrtc/util');\nvar _b = require('../../util/constants'), DEFAULT_ICE_GATHERING_TIMEOUT_MS = _b.DEFAULT_ICE_GATHERING_TIMEOUT_MS, DEFAULT_LOG_LEVEL = _b.DEFAULT_LOG_LEVEL, DEFAULT_SESSION_TIMEOUT_SEC = _b.DEFAULT_SESSION_TIMEOUT_SEC, iceRestartBackoffConfig = _b.iceRestartBackoffConfig;\nvar _c = require('../../util/sdp'), addOrRewriteNewTrackIds = _c.addOrRewriteNewTrackIds, addOrRewriteTrackIds = _c.addOrRewriteTrackIds, createCodecMapForMediaSection = _c.createCodecMapForMediaSection, disableRtx = _c.disableRtx, enableDtxForOpus = _c.enableDtxForOpus, filterLocalCodecs = _c.filterLocalCodecs, getMediaSections = _c.getMediaSections, removeSSRCAttributes = _c.removeSSRCAttributes, revertSimulcast = _c.revertSimulcast, setCodecPreferences = _c.setCodecPreferences, setSimulcast = _c.setSimulcast;\nvar DefaultTimeout = require('../../util/timeout');\nvar _d = require('../../util/twilio-video-errors'), MediaClientLocalDescFailedError = _d.MediaClientLocalDescFailedError, MediaClientRemoteDescFailedError = _d.MediaClientRemoteDescFailedError;\nvar _e = require('../../util'), buildLogLevels = _e.buildLogLevels, getPlatform = _e.getPlatform, isChromeScreenShareTrack = _e.isChromeScreenShareTrack, oncePerTick = _e.oncePerTick, defer = _e.defer;\nvar IceBox = require('./icebox');\nvar DefaultIceConnectionMonitor = require('./iceconnectionmonitor.js');\nvar DataTrackReceiver = require('../../data/receiver');\nvar MediaTrackReceiver = require('../../media/track/receiver');\nvar StateMachine = require('../../statemachine');\nvar Log = require('../../util/log');\nvar TrackMatcher = require('../../util/sdp/trackmatcher');\nvar workaroundIssue8329 = require('../../util/sdp/issue8329');\nvar guess = util.guessBrowser();\nvar platform = getPlatform();\nvar isAndroid = /android/.test(platform);\nvar isChrome = guess === 'chrome';\nvar isFirefox = guess === 'firefox';\nvar isSafari = guess === 'safari';\nvar nInstances = 0;\n/*\nPeerConnectionV2 States\n-----------------------\n\n +------+ +--------+\n | | | |\n | open |--->| closed |\n | | | |\n +------+ +--------+\n | ^ ^\n | | |\n | | |\n v | |\n +----------+ |\n | | |\n | updating |------+\n | |\n +----------+\n\n*/\nvar states = {\n open: [\n 'closed',\n 'updating'\n ],\n updating: [\n 'closed',\n 'open'\n ],\n closed: []\n};\n/**\n * @extends StateMachine\n * @property {id}\n * @emits PeerConnectionV2#connectionStateChanged\n * @emits PeerConnectionV2#iceConnectionStateChanged\n * @emits PeerConnectionV2#candidates\n * @emits PeerConnectionV2#description\n */\nvar PeerConnectionV2 = /** @class */ (function (_super) {\n __extends(PeerConnectionV2, _super);\n /**\n * Construct a {@link PeerConnectionV2}.\n * @param {string} id\n * @param {EncodingParametersImpl} encodingParameters\n * @param {PreferredCodecs} preferredCodecs\n * @param {object} [options]\n */\n function PeerConnectionV2(id, encodingParameters, preferredCodecs, options) {\n var _this = _super.call(this, 'open', states) || this;\n options = Object.assign({\n enableDscp: false,\n dummyAudioMediaStreamTrack: null,\n isChromeScreenShareTrack: isChromeScreenShareTrack,\n iceServers: [],\n logLevel: DEFAULT_LOG_LEVEL,\n offerOptions: {},\n revertSimulcast: revertSimulcast,\n sessionTimeout: DEFAULT_SESSION_TIMEOUT_SEC * 1000,\n setCodecPreferences: setCodecPreferences,\n setSimulcast: setSimulcast,\n Backoff: DefaultBackoff,\n IceConnectionMonitor: DefaultIceConnectionMonitor,\n RTCIceCandidate: DefaultRTCIceCandidate,\n RTCPeerConnection: DefaultRTCPeerConnection,\n RTCSessionDescription: DefaultRTCSessionDescription,\n Timeout: DefaultTimeout\n }, options);\n var configuration = getConfiguration(options);\n var logLevels = buildLogLevels(options.logLevel);\n var RTCPeerConnection = options.RTCPeerConnection;\n if (options.enableDscp === true) {\n options.chromeSpecificConstraints = options.chromeSpecificConstraints || {};\n options.chromeSpecificConstraints.optional = options.chromeSpecificConstraints.optional || [];\n options.chromeSpecificConstraints.optional.push({ googDscp: true });\n }\n var log = options.log ? options.log.createLog('webrtc', _this) : new Log('webrtc', _this, logLevels, options.loggerName);\n var peerConnection = new RTCPeerConnection(configuration, options.chromeSpecificConstraints);\n if (options.dummyAudioMediaStreamTrack) {\n peerConnection.addTrack(options.dummyAudioMediaStreamTrack);\n }\n Object.defineProperties(_this, {\n _appliedTrackIdsToAttributes: {\n value: new Map(),\n writable: true\n },\n _dataChannels: {\n value: new Map()\n },\n _dataTrackReceivers: {\n value: new Set()\n },\n _descriptionRevision: {\n writable: true,\n value: 0\n },\n _didGenerateLocalCandidates: {\n writable: true,\n value: false\n },\n _enableDscp: {\n value: options.enableDscp\n },\n _encodingParameters: {\n value: encodingParameters\n },\n _isChromeScreenShareTrack: {\n value: options.isChromeScreenShareTrack,\n },\n _iceGatheringFailed: {\n value: false,\n writable: true\n },\n _iceGatheringTimeout: {\n value: new options.Timeout(function () { return _this._handleIceGatheringTimeout(); }, DEFAULT_ICE_GATHERING_TIMEOUT_MS, false)\n },\n _iceRestartBackoff: {\n // eslint-disable-next-line new-cap\n value: new options.Backoff(iceRestartBackoffConfig)\n },\n _instanceId: {\n value: ++nInstances\n },\n _isIceConnectionInactive: {\n writable: true,\n value: false\n },\n _isIceLite: {\n writable: true,\n value: false\n },\n _isIceRestartBackoffInProgress: {\n writable: true,\n value: false\n },\n _isRestartingIce: {\n writable: true,\n value: false\n },\n _lastIceConnectionState: {\n writable: true,\n value: null\n },\n _lastStableDescriptionRevision: {\n writable: true,\n value: 0\n },\n _localCandidates: {\n writable: true,\n value: []\n },\n _localCodecs: {\n value: new Set()\n },\n _localCandidatesRevision: {\n writable: true,\n value: 1\n },\n _localDescriptionWithoutSimulcast: {\n writable: true,\n value: null\n },\n _localDescription: {\n writable: true,\n value: null\n },\n _localUfrag: {\n writable: true,\n value: null\n },\n _log: {\n value: log\n },\n _eventObserver: {\n value: options.eventObserver\n },\n _remoteCodecMaps: {\n value: new Map()\n },\n _rtpSenders: {\n value: new Map()\n },\n _rtpNewSenders: {\n value: new Set()\n },\n _iceConnectionMonitor: {\n value: new options.IceConnectionMonitor(peerConnection)\n },\n _mediaTrackReceivers: {\n value: new Set()\n },\n _needsAnswer: {\n writable: true,\n value: false\n },\n _negotiationRole: {\n writable: true,\n value: null\n },\n _offerOptions: {\n writable: true,\n value: options.offerOptions\n },\n _onEncodingParametersChanged: {\n value: oncePerTick(function () {\n if (!_this._needsAnswer) {\n updateEncodingParameters(_this);\n }\n })\n },\n _peerConnection: {\n value: peerConnection\n },\n _preferredAudioCodecs: {\n value: preferredCodecs.audio\n },\n _preferredVideoCodecs: {\n value: preferredCodecs.video\n },\n _shouldApplyDtx: {\n value: preferredCodecs.audio.every(function (_a) {\n var codec = _a.codec;\n return codec !== 'opus';\n })\n || preferredCodecs.audio.some(function (_a) {\n var codec = _a.codec, dtx = _a.dtx;\n return codec === 'opus' && dtx;\n })\n },\n _queuedDescription: {\n writable: true,\n value: null\n },\n _iceReconnectTimeout: {\n value: new options.Timeout(function () {\n log.debug('ICE reconnect timed out');\n _this.close();\n }, options.sessionTimeout, false)\n },\n _recycledTransceivers: {\n value: {\n audio: [],\n video: []\n }\n },\n _replaceTrackPromises: {\n value: new Map()\n },\n _remoteCandidates: {\n writable: true,\n value: new IceBox()\n },\n _setCodecPreferences: {\n // NOTE(mmalavalli): Re-ordering payload types in order to make sure a non-H264\n // preferred codec is selected does not work on Android Firefox due to this behavior:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1683258. So, we work around this by\n // not applying any non-H264 preferred video codec.\n value: isFirefox && isAndroid && preferredCodecs.video[0] && preferredCodecs.video[0].codec.toLowerCase() !== 'h264'\n ? function (sdp) { return sdp; }\n : options.setCodecPreferences\n },\n _setSimulcast: {\n value: options.setSimulcast\n },\n _revertSimulcast: {\n value: options.revertSimulcast\n },\n _RTCIceCandidate: {\n value: options.RTCIceCandidate\n },\n _RTCPeerConnection: {\n value: options.RTCPeerConnection\n },\n _RTCSessionDescription: {\n value: options.RTCSessionDescription\n },\n _shouldOffer: {\n writable: true,\n value: false\n },\n _shouldRestartIce: {\n writable: true,\n value: false\n },\n _trackIdsToAttributes: {\n value: new Map(),\n writable: true\n },\n _trackMatcher: {\n writable: true,\n value: null\n },\n _mediaTrackSenderToPublisherHints: {\n value: new Map()\n },\n id: {\n enumerable: true,\n value: id\n }\n });\n encodingParameters.on('changed', _this._onEncodingParametersChanged);\n peerConnection.addEventListener('connectionstatechange', _this._handleConnectionStateChange.bind(_this));\n peerConnection.addEventListener('datachannel', _this._handleDataChannelEvent.bind(_this));\n peerConnection.addEventListener('icecandidate', _this._handleIceCandidateEvent.bind(_this));\n peerConnection.addEventListener('iceconnectionstatechange', _this._handleIceConnectionStateChange.bind(_this));\n peerConnection.addEventListener('icegatheringstatechange', _this._handleIceGatheringStateChange.bind(_this));\n peerConnection.addEventListener('signalingstatechange', _this._handleSignalingStateChange.bind(_this));\n peerConnection.addEventListener('track', _this._handleTrackEvent.bind(_this));\n var self = _this;\n _this.on('stateChanged', function stateChanged(state) {\n if (state !== 'closed') {\n return;\n }\n self.removeListener('stateChanged', stateChanged);\n self._dataChannels.forEach(function (dataChannel, dataTrackSender) {\n self.removeDataTrackSender(dataTrackSender);\n });\n });\n return _this;\n }\n PeerConnectionV2.prototype.toString = function () {\n return \"[PeerConnectionV2 #\" + this._instanceId + \": \" + this.id + \"]\";\n };\n PeerConnectionV2.prototype.setEffectiveAdaptiveSimulcast = function (effectiveAdaptiveSimulcast) {\n this._log.debug('Setting setEffectiveAdaptiveSimulcast: ', effectiveAdaptiveSimulcast);\n // clear adaptive simulcast from codec preferences if it was set.\n this._preferredVideoCodecs.forEach(function (cs) {\n if ('adaptiveSimulcast' in cs) {\n cs.adaptiveSimulcast = effectiveAdaptiveSimulcast;\n }\n });\n };\n Object.defineProperty(PeerConnectionV2.prototype, \"_shouldApplySimulcast\", {\n get: function () {\n if (!isChrome && !isSafari) {\n return false;\n }\n // adaptiveSimulcast is set to false after connected message is received if other party does not support it.\n var simulcast = this._preferredVideoCodecs.some(function (cs) {\n return cs.codec.toLowerCase() === 'vp8' && cs.simulcast && cs.adaptiveSimulcast !== false;\n });\n return simulcast;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PeerConnectionV2.prototype, \"connectionState\", {\n /**\n * The {@link PeerConnectionV2}'s underlying RTCPeerConnection's RTCPeerConnectionState\n * if supported by the browser, its RTCIceConnectionState otherwise.\n * @property {RTCPeerConnectionState}\n */\n get: function () {\n return this.iceConnectionState === 'failed'\n ? 'failed' : (this._peerConnection.connectionState || this.iceConnectionState);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PeerConnectionV2.prototype, \"iceConnectionState\", {\n /**\n * The {@link PeerConnectionV2}'s underlying RTCPeerConnection's\n * RTCIceConnectionState.\n * @property {RTCIceConnectionState}\n */\n get: function () {\n return ((this._isIceConnectionInactive && this._peerConnection.iceConnectionState === 'disconnected') || this._iceGatheringFailed)\n ? 'failed' : this._peerConnection.iceConnectionState;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PeerConnectionV2.prototype, \"isApplicationSectionNegotiated\", {\n /**\n * Whether the {@link PeerConnectionV2} has negotiated or is in the process\n * of negotiating the application m= section.\n * @returns {boolean}\n */\n get: function () {\n if (this._peerConnection.signalingState !== 'closed') {\n // accessing .localDescription in 'closed' state causes it throw exceptions.\n return this._peerConnection.localDescription\n ? getMediaSections(this._peerConnection.localDescription.sdp, 'application').length > 0\n : false;\n }\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PeerConnectionV2.prototype, \"_isAdaptiveSimulcastEnabled\", {\n /**\n * Whether adaptive simulcast is enabled.\n * @returns {boolean}\n */\n get: function () {\n var adaptiveSimulcastEntry = this._preferredVideoCodecs.find(function (cs) { return 'adaptiveSimulcast' in cs; });\n return adaptiveSimulcastEntry && adaptiveSimulcastEntry.adaptiveSimulcast === true;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @param {MediaStreamTrack} track\n * @param {Array} encodings\n * @param {boolean} trackReplaced\n * @returns {boolean} true if encodings were updated.\n */\n PeerConnectionV2.prototype._maybeUpdateEncodings = function (track, encodings, trackReplaced) {\n if (trackReplaced === void 0) { trackReplaced = false; }\n if (track.kind !== 'video' || track.readyState === 'ended') {\n return false;\n }\n // NOTE(mmalavalli): There is no guarantee that CanvasCaptureMediaStreamTracks will always have \"width\" and \"height\"\n // in their settings. So, we don't update the encodings if they are not present.\n // Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1367082\n var _a = track.getSettings(), height = _a.height, width = _a.width;\n if (typeof height !== 'number' || typeof width !== 'number') {\n return false;\n }\n // Note(mpatwardhan): always configure encodings for safari.\n // for chrome only when adaptive simulcast enabled.\n var browser = util.guessBrowser();\n if (browser === 'safari' || (browser === 'chrome' && this._isAdaptiveSimulcastEnabled)) {\n this._updateEncodings(track, encodings, trackReplaced);\n return true;\n }\n return false;\n };\n /**\n * Configures with default encodings depending on track type and resolution.\n * Default configuration sets some encodings to disabled, and for others set scaleResolutionDownBy\n * values. When trackReplaced is set to true, it will clear 'active' for any encodings that\n * needs to be enabled.\n * @param {MediaStreamTrack} track\n * @param {Array} encodings\n * @param {boolean} trackReplaced\n */\n PeerConnectionV2.prototype._updateEncodings = function (track, encodings, trackReplaced) {\n if (this._isChromeScreenShareTrack(track)) {\n var screenShareActiveLayerConfig_1 = [\n { scaleResolutionDownBy: 1 },\n { scaleResolutionDownBy: 1 }\n ];\n encodings.forEach(function (encoding, i) {\n var activeLayerConfig = screenShareActiveLayerConfig_1[i];\n if (activeLayerConfig) {\n encoding.scaleResolutionDownBy = activeLayerConfig.scaleResolutionDownBy;\n if (trackReplaced) {\n delete encoding.active;\n }\n }\n else {\n encoding.active = false;\n delete encoding.scaleResolutionDownBy;\n }\n });\n }\n else {\n var _a = track.getSettings(), width = _a.width, height = _a.height;\n // NOTE(mpatwardhan): for non-screen share tracks\n // enable layers depending on track resolutions\n var pixelsToMaxActiveLayers = [\n { pixels: 960 * 540, maxActiveLayers: 3 },\n { pixels: 480 * 270, maxActiveLayers: 2 },\n { pixels: 0, maxActiveLayers: 1 }\n ];\n var trackPixels_1 = width * height;\n var activeLayersInfo = pixelsToMaxActiveLayers.find(function (layer) { return trackPixels_1 >= layer.pixels; });\n var activeLayers_1 = Math.min(encodings.length, activeLayersInfo.maxActiveLayers);\n encodings.forEach(function (encoding, i) {\n var enabled = i < activeLayers_1;\n if (enabled) {\n encoding.scaleResolutionDownBy = 1 << (activeLayers_1 - i - 1);\n if (trackReplaced) {\n encoding.active = true;\n }\n }\n else {\n encoding.active = false;\n delete encoding.scaleResolutionDownBy;\n }\n });\n }\n this._log.debug('_updateEncodings:', encodings.map(function (_a, i) {\n var active = _a.active, scaleResolutionDownBy = _a.scaleResolutionDownBy;\n return \"[\" + i + \": \" + active + \", \" + (scaleResolutionDownBy || 0) + \"]\";\n }).join(', '));\n };\n /**\n * Add an ICE candidate to the {@link PeerConnectionV2}.\n * @private\n * @param {object} candidate\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._addIceCandidate = function (candidate) {\n var _this = this;\n return Promise.resolve().then(function () {\n candidate = new _this._RTCIceCandidate(candidate);\n return _this._peerConnection.addIceCandidate(candidate);\n }).catch(function (error) {\n // NOTE(mmalavalli): Firefox 68+ now generates an RTCIceCandidate with an\n // empty candidate string to signal end-of-candidates, followed by a null\n // candidate. As of now, Chrome and Safari reject this RTCIceCandidate. Since\n // this does not affect the media connection between Firefox 68+ and Chrome/Safari\n // in Peer-to-Peer Rooms, we suppress the Error and log a warning message.\n //\n // Chrome bug: https://bugs.chromium.org/p/chromium/issues/detail?id=978582\n //\n _this._log.warn(\"Failed to add RTCIceCandidate \" + (candidate ? \"\\\"\" + candidate.candidate + \"\\\"\" : 'null') + \": \"\n + error.message);\n });\n };\n /**\n * Add ICE candidates to the {@link PeerConnectionV2}.\n * @private\n * @param {Array} candidates\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._addIceCandidates = function (candidates) {\n return Promise.all(candidates.map(this._addIceCandidate, this)).then(function () { });\n };\n /**\n * Add a new RTCRtpTransceiver or update an existing RTCRtpTransceiver for the\n * given MediaStreamTrack.\n * @private\n * @param {MediaStreamTrack} track\n * @returns {RTCRtpTransceiver}\n */\n PeerConnectionV2.prototype._addOrUpdateTransceiver = function (track) {\n var _this = this;\n var transceiver = takeRecycledTransceiver(this, track.kind);\n if (transceiver && transceiver.sender) {\n var oldTrackId = transceiver.sender.track ? transceiver.sender.track.id : null;\n if (oldTrackId) {\n this._log.warn(\"Reusing transceiver: \" + transceiver.mid + \"] \" + oldTrackId + \" => \" + track.id);\n }\n // NOTE(mpatwardhan):remember this transceiver while we replace track.\n // we recycle transceivers that are not in use after 'negotiationCompleted', but we want to prevent\n // this one from getting recycled while replaceTrack is pending.\n this._replaceTrackPromises.set(transceiver, transceiver.sender.replaceTrack(track).then(function () {\n transceiver.direction = 'sendrecv';\n }, function () {\n // Do nothing.\n }).finally(function () {\n _this._replaceTrackPromises.delete(transceiver);\n }));\n return transceiver;\n }\n return this._peerConnection.addTransceiver(track);\n };\n /**\n * Check the {@link IceBox}.\n * @private\n * @param {RTCSessionDescriptionInit} description\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._checkIceBox = function (description) {\n var ufrag = getUfrag(description);\n if (!ufrag) {\n return Promise.resolve();\n }\n var candidates = this._remoteCandidates.setUfrag(ufrag);\n return this._addIceCandidates(candidates);\n };\n /**\n * Create an answer and set it on the {@link PeerConnectionV2}.\n * @private\n * @param {RTCSessionDescriptionInit} offer\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._answer = function (offer) {\n var _this = this;\n return Promise.resolve().then(function () {\n if (!_this._negotiationRole) {\n _this._negotiationRole = 'answerer';\n }\n return _this._setRemoteDescription(offer);\n }).catch(function () {\n throw new MediaClientRemoteDescFailedError();\n }).then(function () {\n return _this._peerConnection.createAnswer();\n }).then(function (answer) {\n if (isFirefox) {\n // NOTE(mmalavalli): We work around Chromium bug 1106157 by disabling\n // RTX in Firefox 79+. For more details about the bug, please go here:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1106157\n answer = new _this._RTCSessionDescription({\n sdp: disableRtx(answer.sdp),\n type: answer.type\n });\n }\n else {\n answer = workaroundIssue8329(answer);\n }\n // NOTE(mpatwardhan): Upcoming chrome versions are going to remove ssrc attributes\n // mslabel and label. See this bug https://bugs.chromium.org/p/webrtc/issues/detail?id=7110\n // and PSA: https://groups.google.com/forum/#!searchin/discuss-webrtc/PSA%7Csort:date/discuss-webrtc/jcZO-Wj0Wus/k2XvPCvoAwAJ\n // We are not referencing those attributes, but this changes goes ahead and removes them to see if it works.\n // this also helps reduce bytes on wires\n var updatedSdp = removeSSRCAttributes(answer.sdp, ['mslabel', 'label']);\n if (_this._shouldApplySimulcast) {\n var sdpWithoutSimulcast = updatedSdp;\n updatedSdp = _this._setSimulcast(sdpWithoutSimulcast, _this._trackIdsToAttributes);\n // NOTE(syerrapragada): VMS does not support H264 simulcast. So,\n // unset simulcast for sections in local offer where corresponding\n // sections in answer doesn't have vp8 as preferred codec and reapply offer.\n updatedSdp = _this._revertSimulcast(updatedSdp, sdpWithoutSimulcast, offer.sdp);\n }\n // NOTE(mmalavalli): Work around Chromium bug 1074421.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1074421\n updatedSdp = updatedSdp.replace(/42e015/g, '42e01f');\n return _this._setLocalDescription({\n type: answer.type,\n sdp: updatedSdp\n });\n }).then(function () {\n return _this._checkIceBox(offer);\n }).then(function () {\n return _this._queuedDescription\n && _this._updateDescription(_this._queuedDescription);\n }).then(function () {\n _this._queuedDescription = null;\n return _this._maybeReoffer(_this._peerConnection.localDescription);\n }).catch(function (error) {\n var errorToThrow = error instanceof MediaClientRemoteDescFailedError ? error : new MediaClientLocalDescFailedError();\n _this._publishMediaWarning({\n message: 'Failed to _answer',\n code: errorToThrow.code,\n error: error\n });\n throw errorToThrow;\n });\n };\n /**\n * Close the underlying RTCPeerConnection. Returns false if the\n * RTCPeerConnection was already closed.\n * @private\n * @returns {boolean}\n */\n PeerConnectionV2.prototype._close = function () {\n this._iceConnectionMonitor.stop();\n if (this._peerConnection.signalingState !== 'closed') {\n this._peerConnection.close();\n this.preempt('closed');\n this._encodingParameters.removeListener('changed', this._onEncodingParametersChanged);\n return true;\n }\n return false;\n };\n /**\n * Handle a \"connectionstatechange\" event.\n * @private\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleConnectionStateChange = function () {\n this.emit('connectionStateChanged');\n };\n /**\n * Handle a \"datachannel\" event.\n * @private\n * @param {RTCDataChannelEvent} event\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleDataChannelEvent = function (event) {\n var _this = this;\n var dataChannel = event.channel;\n var dataTrackReceiver = new DataTrackReceiver(dataChannel);\n this._dataTrackReceivers.add(dataTrackReceiver);\n dataChannel.addEventListener('close', function () {\n _this._dataTrackReceivers.delete(dataTrackReceiver);\n });\n this.emit('trackAdded', dataTrackReceiver);\n };\n /**\n * Handle a glare scenario on the {@link PeerConnectionV2}.\n * @private\n * @param {RTCSessionDescriptionInit} offer\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._handleGlare = function (offer) {\n var _this = this;\n this._log.debug('Glare detected; rolling back');\n if (this._isRestartingIce) {\n this._log.debug('An ICE restart was in progress; we\\'ll need to restart ICE again after rolling back');\n this._isRestartingIce = false;\n this._shouldRestartIce = true;\n }\n return Promise.resolve().then(function () {\n _this._trackIdsToAttributes = new Map(_this._appliedTrackIdsToAttributes);\n return _this._setLocalDescription({ type: 'rollback' });\n }).then(function () {\n _this._needsAnswer = false;\n return _this._answer(offer);\n }).then(function (didReoffer) {\n return didReoffer ? Promise.resolve() : _this._offer();\n });\n };\n PeerConnectionV2.prototype._publishMediaWarning = function (_a) {\n var message = _a.message, code = _a.code, error = _a.error, sdp = _a.sdp;\n this._eventObserver.emit('event', { level: 'warning', name: 'error', group: 'media', payload: {\n message: message,\n code: code,\n context: JSON.stringify({ error: error.message, sdp: sdp })\n } });\n };\n /**\n * Handle an ICE candidate event.\n * @private\n * @param {Event} event\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleIceCandidateEvent = function (event) {\n if (event.candidate) {\n this._log.debug('Clearing ICE gathering timeout');\n this._didGenerateLocalCandidates = true;\n this._iceGatheringTimeout.clear();\n this._localCandidates.push(event.candidate);\n }\n var peerConnectionState = {\n ice: {\n candidates: this._isIceLite ? [] : this._localCandidates.slice(),\n ufrag: this._localUfrag\n },\n id: this.id\n };\n if (!event.candidate) {\n peerConnectionState.ice.complete = true;\n }\n if (!(this._isIceLite && event.candidate)) {\n peerConnectionState.ice.revision = this._localCandidatesRevision++;\n this.emit('candidates', peerConnectionState);\n }\n };\n /**\n * Handle an ICE connection state change event.\n * @private\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleIceConnectionStateChange = function () {\n var _this = this;\n var iceConnectionState = this._peerConnection.iceConnectionState;\n var isIceConnectedOrComplete = ['connected', 'completed'].includes(iceConnectionState);\n var log = this._log;\n log.debug(\"ICE connection state is \\\"\" + iceConnectionState + \"\\\"\");\n if (isIceConnectedOrComplete) {\n this._iceReconnectTimeout.clear();\n this._iceRestartBackoff.reset();\n }\n if (this._lastIceConnectionState !== 'failed' && iceConnectionState === 'failed' && !this._shouldRestartIce && !this._isRestartingIce) {\n // Case 1: Transition to \"failed\".\n log.warn('ICE failed');\n this._initiateIceRestartBackoff();\n }\n else if (['disconnected', 'failed'].includes(this._lastIceConnectionState) && isIceConnectedOrComplete) {\n // Case 2: Transition from \"disconnected\" or \"failed\".\n log.debug('ICE reconnected');\n }\n // start monitor media when connected, and continue to monitor while state is complete-disconnected-connected.\n if (iceConnectionState === 'connected') {\n this._isIceConnectionInactive = false;\n this._iceConnectionMonitor.start(function () {\n // note: iceConnection monitor waits for iceConnectionState=disconnected for\n // detecting inactivity. Its possible that it may know about disconnected before _handleIceConnectionStateChange\n _this._iceConnectionMonitor.stop();\n if (!_this._shouldRestartIce && !_this._isRestartingIce) {\n log.warn('ICE Connection Monitor detected inactivity');\n _this._isIceConnectionInactive = true;\n _this._initiateIceRestartBackoff();\n _this.emit('iceConnectionStateChanged');\n _this.emit('connectionStateChanged');\n }\n });\n }\n else if (!['disconnected', 'completed'].includes(iceConnectionState)) { // don't stop monitoring for disconnected or completed.\n this._iceConnectionMonitor.stop();\n this._isIceConnectionInactive = false;\n }\n this._lastIceConnectionState = iceConnectionState;\n this.emit('iceConnectionStateChanged');\n };\n /**\n * Handle ICE gathering timeout.\n * @private\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleIceGatheringTimeout = function () {\n this._log.warn('ICE failed to gather any local candidates');\n this._iceGatheringFailed = true;\n this._initiateIceRestartBackoff();\n this.emit('iceConnectionStateChanged');\n this.emit('connectionStateChanged');\n };\n /**\n * Handle an ICE gathering state change event.\n * @private\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleIceGatheringStateChange = function () {\n var iceGatheringState = this._peerConnection.iceGatheringState;\n var log = this._log;\n log.debug(\"ICE gathering state is \\\"\" + iceGatheringState + \"\\\"\");\n // NOTE(mmalavalli): Start the ICE gathering timeout only if the RTCPeerConnection\n // has started gathering candidates for the first time since the initial offer/answer\n // or an offer/answer with ICE restart.\n var _a = this._iceGatheringTimeout, delay = _a.delay, isSet = _a.isSet;\n if (iceGatheringState === 'gathering' && !this._didGenerateLocalCandidates && !isSet) {\n log.debug(\"Starting ICE gathering timeout: \" + delay);\n this._iceGatheringFailed = false;\n this._iceGatheringTimeout.start();\n }\n };\n /**\n * Handle a signaling state change event.\n * @private\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleSignalingStateChange = function () {\n if (this._peerConnection.signalingState === 'stable') {\n this._appliedTrackIdsToAttributes = new Map(this._trackIdsToAttributes);\n }\n };\n /**\n * Handle a track event.\n * @private\n * @param {RTCTrackEvent} event\n * @returns {void}\n */\n PeerConnectionV2.prototype._handleTrackEvent = function (event) {\n var _this = this;\n var sdp = this._peerConnection.remoteDescription\n ? this._peerConnection.remoteDescription.sdp\n : null;\n this._trackMatcher = this._trackMatcher || new TrackMatcher();\n this._trackMatcher.update(sdp);\n var mediaStreamTrack = event.track;\n var signaledTrackId = this._trackMatcher.match(event) || mediaStreamTrack.id;\n var mediaTrackReceiver = new MediaTrackReceiver(signaledTrackId, mediaStreamTrack);\n // NOTE(mmalavalli): \"ended\" is not fired on the remote MediaStreamTrack when\n // the remote peer removes a track. So, when this MediaStreamTrack is re-used\n // for a different track due to the remote peer calling RTCRtpSender.replaceTrack(),\n // we delete the previous MediaTrackReceiver that owned this MediaStreamTrack\n // before adding the new MediaTrackReceiver.\n this._mediaTrackReceivers.forEach(function (trackReceiver) {\n if (trackReceiver.track.id === mediaTrackReceiver.track.id) {\n _this._mediaTrackReceivers.delete(trackReceiver);\n }\n });\n this._mediaTrackReceivers.add(mediaTrackReceiver);\n mediaStreamTrack.addEventListener('ended', function () { return _this._mediaTrackReceivers.delete(mediaTrackReceiver); });\n this.emit('trackAdded', mediaTrackReceiver);\n };\n /**\n * Initiate ICE Restart.\n * @private\n * @returns {void}\n */\n PeerConnectionV2.prototype._initiateIceRestart = function () {\n if (this._peerConnection.signalingState === 'closed') {\n return;\n }\n var log = this._log;\n log.warn('Attempting to restart ICE');\n this._didGenerateLocalCandidates = false;\n this._isIceRestartBackoffInProgress = false;\n this._shouldRestartIce = true;\n var _a = this._iceReconnectTimeout, delay = _a.delay, isSet = _a.isSet;\n if (!isSet) {\n log.debug(\"Starting ICE reconnect timeout: \" + delay);\n this._iceReconnectTimeout.start();\n }\n this.offer().catch(function (ex) {\n log.error(\"offer failed in _initiateIceRestart with: \" + ex.message);\n });\n };\n /**\n * Schedule an ICE Restart.\n * @private\n * @returns {void}\n */\n PeerConnectionV2.prototype._initiateIceRestartBackoff = function () {\n var _this = this;\n if (this._peerConnection.signalingState === 'closed' || this._isIceRestartBackoffInProgress) {\n return;\n }\n this._log.warn('An ICE restart has been scheduled');\n this._isIceRestartBackoffInProgress = true;\n this._iceRestartBackoff.backoff(function () { return _this._initiateIceRestart(); });\n };\n /**\n * Conditionally re-offer.\n * @private\n * @param {?RTCSessionDescriptionInit} localDescription\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._maybeReoffer = function (localDescription) {\n var shouldReoffer = this._shouldOffer;\n if (localDescription && localDescription.sdp) {\n // NOTE(mmalavalli): If the local RTCSessionDescription has fewer audio and/or\n // video send* m= lines than the corresponding RTCRtpSenders with non-null\n // MediaStreamTracks, it means that the newly added RTCRtpSenders require\n // renegotiation.\n var senders_1 = this._peerConnection.getSenders().filter(function (sender) { return sender.track; });\n shouldReoffer = ['audio', 'video'].reduce(function (shouldOffer, kind) {\n var mediaSections = getMediaSections(localDescription.sdp, kind, '(sendrecv|sendonly)');\n var sendersOfKind = senders_1.filter(isSenderOfKind.bind(null, kind));\n return shouldOffer || (mediaSections.length < sendersOfKind.length);\n }, shouldReoffer);\n // NOTE(mroberts): We also need to re-offer if we have a DataTrack to share\n // but no m= application section.\n var hasDataTrack = this._dataChannels.size > 0;\n var hasApplicationMediaSection = getMediaSections(localDescription.sdp, 'application').length > 0;\n var needsApplicationMediaSection = hasDataTrack && !hasApplicationMediaSection;\n shouldReoffer = shouldReoffer || needsApplicationMediaSection;\n }\n var promise = shouldReoffer ? this._offer() : Promise.resolve();\n return promise.then(function () { return shouldReoffer; });\n };\n /**\n * Create an offer and set it on the {@link PeerConnectionV2}.\n * @private\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._offer = function () {\n var _this = this;\n var offerOptions = Object.assign({}, this._offerOptions);\n this._needsAnswer = true;\n if (this._shouldRestartIce) {\n this._shouldRestartIce = false;\n this._isRestartingIce = true;\n offerOptions.iceRestart = true;\n }\n return Promise.all(this._replaceTrackPromises.values()).then(function () {\n return _this._peerConnection.createOffer(offerOptions);\n }).catch(function (error) {\n var errorToThrow = new MediaClientLocalDescFailedError();\n _this._publishMediaWarning({\n message: 'Failed to create offer',\n code: errorToThrow.code,\n error: error\n });\n throw errorToThrow;\n }).then(function (offer) {\n if (isFirefox) {\n // NOTE(mmalavalli): We work around Chromium bug 1106157 by disabling\n // RTX in Firefox 79+. For more details about the bug, please go here:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1106157\n offer = new _this._RTCSessionDescription({\n sdp: disableRtx(offer.sdp),\n type: offer.type\n });\n }\n else {\n offer = workaroundIssue8329(offer);\n }\n // NOTE(mpatwardhan): upcoming chrome versions are going to remove ssrc attributes\n // mslabel and label. See this bug https://bugs.chromium.org/p/webrtc/issues/detail?id=7110\n // and PSA: https://groups.google.com/forum/#!searchin/discuss-webrtc/PSA%7Csort:date/discuss-webrtc/jcZO-Wj0Wus/k2XvPCvoAwAJ\n // Looks like we are not referencing those attributes, but this changes goes ahead and removes them to see if it works.\n // this also helps reduce bytes on wires\n var sdp = removeSSRCAttributes(offer.sdp, ['mslabel', 'label']);\n sdp = _this._peerConnection.remoteDescription\n ? filterLocalCodecs(sdp, _this._peerConnection.remoteDescription.sdp)\n : sdp;\n var updatedSdp = _this._setCodecPreferences(sdp, _this._preferredAudioCodecs, _this._preferredVideoCodecs);\n _this._shouldOffer = false;\n if (!_this._negotiationRole) {\n _this._negotiationRole = 'offerer';\n }\n if (_this._shouldApplySimulcast) {\n _this._localDescriptionWithoutSimulcast = {\n type: 'offer',\n sdp: updatedSdp\n };\n updatedSdp = _this._setSimulcast(updatedSdp, _this._trackIdsToAttributes);\n }\n return _this._setLocalDescription({\n type: 'offer',\n sdp: updatedSdp\n });\n });\n };\n /**\n * Get the MediaTrackSender ID of the given MediaStreamTrack ID.\n * Since a MediaTrackSender's underlying MediaStreamTrack can be\n * replaced, the corresponding IDs can mismatch.\n * @private\n * @param {Track.ID} id\n * @returns {Track.ID}\n */\n PeerConnectionV2.prototype._getMediaTrackSenderId = function (trackId) {\n var mediaTrackSender = Array.from(this._rtpSenders.keys()).find(function (_a) {\n var id = _a.track.id;\n return id === trackId;\n });\n return mediaTrackSender ? mediaTrackSender.id : trackId;\n };\n /**\n * Add or rewrite local MediaStreamTrack IDs in the given RTCSessionDescription.\n * @private\n * @param {RTCSessionDescription} description\n * @return {RTCSessionDescription}\n */\n PeerConnectionV2.prototype._addOrRewriteLocalTrackIds = function (description) {\n var _this = this;\n var transceivers = this._peerConnection.getTransceivers();\n var activeTransceivers = transceivers.filter(function (_a) {\n var sender = _a.sender, stopped = _a.stopped;\n return !stopped && sender && sender.track;\n });\n // NOTE(mmalavalli): There is no guarantee that MediaStreamTrack IDs will be present in\n // SDPs, and even if they are, there is no guarantee that they will be the same as the\n // actual MediaStreamTrack IDs. So, we add or re-write the actual MediaStreamTrack IDs\n // to the assigned m= sections here.\n var assignedTransceivers = activeTransceivers.filter(function (_a) {\n var mid = _a.mid;\n return mid;\n });\n var midsToTrackIds = new Map(assignedTransceivers.map(function (_a) {\n var mid = _a.mid, sender = _a.sender;\n return [mid, _this._getMediaTrackSenderId(sender.track.id)];\n }));\n var sdp1 = addOrRewriteTrackIds(description.sdp, midsToTrackIds);\n // NOTE(mmalavalli): Chrome and Safari do not apply the offer until they get an answer.\n // So, we add or re-write the actual MediaStreamTrack IDs to the unassigned m= sections here.\n var unassignedTransceivers = activeTransceivers.filter(function (_a) {\n var mid = _a.mid;\n return !mid;\n });\n var newTrackIdsByKind = new Map(['audio', 'video'].map(function (kind) { return [\n kind,\n unassignedTransceivers.filter(function (_a) {\n var sender = _a.sender;\n return sender.track.kind === kind;\n }).map(function (_a) {\n var sender = _a.sender;\n return _this._getMediaTrackSenderId(sender.track.id);\n })\n ]; }));\n var sdp2 = addOrRewriteNewTrackIds(sdp1, midsToTrackIds, newTrackIdsByKind);\n return new this._RTCSessionDescription({\n sdp: sdp2,\n type: description.type\n });\n };\n /**\n * Rollback and apply the given offer.\n * @private\n * @param {RTCSessionDescriptionInit} offer\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._rollbackAndApplyOffer = function (offer) {\n var _this = this;\n return this._setLocalDescription({ type: 'rollback' }).then(function () { return _this._setLocalDescription(offer); });\n };\n /**\n * Set a local description on the {@link PeerConnectionV2}.\n * @private\n * @param {RTCSessionDescription|RTCSessionDescriptionInit} description\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._setLocalDescription = function (description) {\n var _this = this;\n if (description.type !== 'rollback' && this._shouldApplyDtx) {\n description = new this._RTCSessionDescription({\n sdp: enableDtxForOpus(description.sdp),\n type: description.type\n });\n }\n return this._peerConnection.setLocalDescription(description).catch(function (error) {\n _this._log.warn(\"Calling setLocalDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed with the error \\\"\" + error.message + \"\\\".\", error);\n var errorToThrow = new MediaClientLocalDescFailedError();\n var publishWarning = {\n message: \"Calling setLocalDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed\",\n code: errorToThrow.code,\n error: error\n };\n if (description.sdp) {\n _this._log.warn(\"The SDP was \" + description.sdp);\n publishWarning.sdp = description.sdp;\n }\n _this._publishMediaWarning(publishWarning);\n throw errorToThrow;\n }).then(function () {\n if (description.type !== 'rollback') {\n _this._localDescription = _this._addOrRewriteLocalTrackIds(description);\n // NOTE(mmalavalli): In order for this feature to be backward compatible with older\n // SDK versions which to not support opus DTX, we append \"usedtx=1\" to the local SDP\n // only while applying it. We will not send it over the wire to prevent inadvertent\n // enabling of opus DTX in older SDKs. Newer SDKs will append \"usedtx=1\" by themselves\n // if the developer has requested opus DTX to be enabled. (JSDK-3063)\n if (_this._shouldApplyDtx) {\n _this._localDescription = new _this._RTCSessionDescription({\n sdp: enableDtxForOpus(_this._localDescription.sdp, []),\n type: _this._localDescription.type\n });\n }\n _this._localCandidates = [];\n if (description.type === 'offer') {\n _this._descriptionRevision++;\n }\n else if (description.type === 'answer') {\n _this._lastStableDescriptionRevision = _this._descriptionRevision;\n negotiationCompleted(_this);\n }\n _this._localUfrag = getUfrag(description);\n _this.emit('description', _this.getState());\n }\n });\n };\n /**\n * Set a remote RTCSessionDescription on the {@link PeerConnectionV2}.\n * @private\n * @param {RTCSessionDescriptionInit} description\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._setRemoteDescription = function (description) {\n var _this = this;\n if (description.sdp) {\n description.sdp = this._setCodecPreferences(description.sdp, this._preferredAudioCodecs, this._preferredVideoCodecs);\n if (this._shouldApplyDtx) {\n description.sdp = enableDtxForOpus(description.sdp);\n }\n else {\n // NOTE(mmalavalli): Remove \"usedtx=1\" from opus's fmtp line if present\n // since DTX is disabled.\n description.sdp = enableDtxForOpus(description.sdp, []);\n }\n if (isFirefox) {\n // NOTE(mroberts): Do this to reduce our MediaStream count in Firefox. By\n // mapping MediaStream IDs in the SDP to \"-\", we ensure the \"track\" event\n // doesn't include any new MediaStreams in Firefox. Its `streams` member\n // will always be the empty Array.\n description.sdp = filterOutMediaStreamIds(description.sdp);\n }\n if (!this._peerConnection.remoteDescription) {\n this._isIceLite = /a=ice-lite/.test(description.sdp);\n }\n }\n description = new this._RTCSessionDescription(description);\n // eslint-disable-next-line consistent-return\n return Promise.resolve().then(function () {\n // NOTE(syerrapragada): VMS does not support H264 simulcast. So,\n // unset simulcast for sections in local offer where corresponding\n // sections in answer doesn't have vp8 as preferred codec and reapply offer.\n if (description.type === 'answer' && _this._localDescriptionWithoutSimulcast) {\n // NOTE(mpatwardhan):if we were using adaptive simulcast, and if its not supported by server\n // revert simulcast even for vp8.\n var adaptiveSimulcastEntry = _this._preferredVideoCodecs.find(function (cs) { return 'adaptiveSimulcast' in cs; });\n var revertForAll = !!adaptiveSimulcastEntry && adaptiveSimulcastEntry.adaptiveSimulcast === false;\n var sdpWithoutSimulcastForNonVP8MediaSections = _this._revertSimulcast(_this._localDescription.sdp, _this._localDescriptionWithoutSimulcast.sdp, description.sdp, revertForAll);\n _this._localDescriptionWithoutSimulcast = null;\n if (sdpWithoutSimulcastForNonVP8MediaSections !== _this._localDescription.sdp) {\n return _this._rollbackAndApplyOffer({\n type: _this._localDescription.type,\n sdp: sdpWithoutSimulcastForNonVP8MediaSections\n });\n }\n }\n }).then(function () { return _this._peerConnection.setRemoteDescription(description); }).then(function () {\n if (description.type === 'answer') {\n if (_this._isRestartingIce) {\n _this._log.debug('An ICE restart was in-progress and is now completed');\n _this._isRestartingIce = false;\n }\n negotiationCompleted(_this);\n }\n }, function (error) {\n _this._log.warn(\"Calling setRemoteDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed with the error \\\"\" + error.message + \"\\\".\", error);\n if (description.sdp) {\n _this._log.warn(\"The SDP was \" + description.sdp);\n }\n throw error;\n });\n };\n /**\n * Update the {@link PeerConnectionV2}'s description.\n * @private\n * @param {RTCSessionDescriptionInit} description\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._updateDescription = function (description) {\n var _this = this;\n switch (description.type) {\n case 'answer':\n case 'pranswer':\n if (description.revision !== this._descriptionRevision\n || this._peerConnection.signalingState !== 'have-local-offer') {\n return Promise.resolve();\n }\n this._descriptionRevision = description.revision;\n break;\n case 'close':\n return this._close();\n case 'create-offer':\n if (description.revision <= this._lastStableDescriptionRevision) {\n return Promise.resolve();\n }\n else if (this._needsAnswer) {\n this._queuedDescription = description;\n return Promise.resolve();\n }\n this._descriptionRevision = description.revision;\n return this._offer();\n case 'offer':\n if (description.revision <= this._lastStableDescriptionRevision\n || this._peerConnection.signalingState === 'closed') {\n return Promise.resolve();\n }\n if (this._peerConnection.signalingState === 'have-local-offer') {\n // NOTE(mpatwardhan): For a peer connection\n // 1) createOffer always generate SDP with `setup:actpass`\n // 2) when remote description is set `setup:active` - the answer generated selects the dtls role of setup:passive\n // 3) when remote description is set `setup:passive` - the answer generated selects the dtls role of setup:active\n // 4) when remote description is set `setup:actpass` - the answer generated uses the previously negotiated role (if not negotiated previously setup:active is used)\n // This test shows the behavior: https://github.com/twilio/twilio-webrtc.js/blob/master/test/integration/spec/rtcpeerconnection.js#L936\n // with glare handling (if dtls role was not negotiated before ) the generated answer will set setup:active.\n // we do not want that. lets wait for \"initial negotiation\" before attempting glare handling.\n if (this._needsAnswer && this._lastStableDescriptionRevision === 0) {\n this._queuedDescription = description;\n return Promise.resolve();\n }\n this._descriptionRevision = description.revision;\n return this._handleGlare(description);\n }\n this._descriptionRevision = description.revision;\n return this._answer(description).then(function () { });\n default:\n // Do nothing.\n }\n // Handle answer or pranswer.\n var revision = description.revision;\n return Promise.resolve().then(function () {\n return _this._setRemoteDescription(description);\n }).catch(function (error) {\n var errorToThrow = new MediaClientRemoteDescFailedError();\n _this._publishMediaWarning({\n message: \"Calling setRemoteDescription with an RTCSessionDescription of type \\\"\" + description.type + \"\\\" failed\",\n code: errorToThrow.code,\n error: error,\n sdp: description.sdp\n });\n throw errorToThrow;\n }).then(function () {\n _this._lastStableDescriptionRevision = revision;\n _this._needsAnswer = false;\n return _this._checkIceBox(description);\n }).then(function () {\n return _this._queuedDescription\n && _this._updateDescription(_this._queuedDescription);\n }).then(function () {\n _this._queuedDescription = null;\n return _this._maybeReoffer(_this._peerConnection.localDescription).then(function () { });\n });\n };\n /**\n * Update the {@link PeerConnectionV2}'s ICE candidates.\n * @private\n * @param {object} iceState\n * @returns {Promise}\n */\n PeerConnectionV2.prototype._updateIce = function (iceState) {\n var candidates = this._remoteCandidates.update(iceState);\n return this._addIceCandidates(candidates);\n };\n /**\n * Add a {@link DataTrackSender} to the {@link PeerConnectionV2}.\n * @param {DataTrackSender} dataTrackSender\n * @returns {void}\n */\n PeerConnectionV2.prototype.addDataTrackSender = function (dataTrackSender) {\n if (this._dataChannels.has(dataTrackSender)) {\n return;\n }\n try {\n var dataChannelDict = {\n ordered: dataTrackSender.ordered\n };\n if (dataTrackSender.maxPacketLifeTime !== null) {\n dataChannelDict.maxPacketLifeTime = dataTrackSender.maxPacketLifeTime;\n }\n if (dataTrackSender.maxRetransmits !== null) {\n dataChannelDict.maxRetransmits = dataTrackSender.maxRetransmits;\n }\n var dataChannel = this._peerConnection.createDataChannel(dataTrackSender.id, dataChannelDict);\n dataTrackSender.addDataChannel(dataChannel);\n this._dataChannels.set(dataTrackSender, dataChannel);\n }\n catch (error) {\n this._log.warn(\"Error creating an RTCDataChannel for DataTrack \\\"\" + dataTrackSender.id + \"\\\": \" + error.message);\n }\n };\n PeerConnectionV2.prototype._handleQueuedPublisherHints = function () {\n var _this = this;\n if (this._peerConnection.signalingState === 'stable') {\n this._mediaTrackSenderToPublisherHints.forEach(function (_a, mediaTrackSender) {\n var deferred = _a.deferred, encodings = _a.encodings;\n _this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n _this._setPublisherHint(mediaTrackSender, encodings)\n .then(function (result) { return deferred.resolve(result); })\n .catch(function (error) { return deferred.reject(error); });\n });\n }\n };\n /**\n * updates encodings for simulcast layers of given sender.\n * @param {RTCRtpSender} sender\n * @param {Array<{enabled: boolean, layer_index: number}>|null} encodings\n * @returns {Promise} string indicating result of the operation. can be one of\n * \"OK\", \"INVALID_HINT\", \"COULD_NOT_APPLY_HINT\", \"UNKNOWN_TRACK\"\n */\n PeerConnectionV2.prototype._setPublisherHint = function (mediaTrackSender, encodings) {\n var _this = this;\n if (isFirefox) {\n return Promise.resolve('COULD_NOT_APPLY_HINT');\n }\n if (this._mediaTrackSenderToPublisherHints.has(mediaTrackSender)) {\n // skip any stale hint associated with the mediaTrackSender.\n var queuedHint = this._mediaTrackSenderToPublisherHints.get(mediaTrackSender);\n queuedHint.deferred.resolve('REQUEST_SKIPPED');\n this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n }\n var sender = this._rtpSenders.get(mediaTrackSender);\n if (!sender) {\n this._log.warn('Could not apply publisher hint because RTCRtpSender was not found');\n return Promise.resolve('UNKNOWN_TRACK');\n }\n if (this._peerConnection.signalingState === 'closed') {\n this._log.warn('Could not apply publisher hint because signalingState was \"closed\"');\n return Promise.resolve('COULD_NOT_APPLY_HINT');\n }\n if (this._peerConnection.signalingState !== 'stable') {\n // enqueue this hint to be applied when pc becomes stable.\n this._log.debug('Queuing up publisher hint because signalingState:', this._peerConnection.signalingState);\n var deferred = defer();\n this._mediaTrackSenderToPublisherHints.set(mediaTrackSender, { deferred: deferred, encodings: encodings });\n return deferred.promise;\n }\n var parameters = sender.getParameters();\n if (encodings !== null) {\n encodings.forEach(function (_a) {\n var enabled = _a.enabled, layerIndex = _a.layer_index;\n if (parameters.encodings.length > layerIndex) {\n _this._log.debug(\"layer:\" + layerIndex + \", active:\" + parameters.encodings[layerIndex].active + \" => \" + enabled);\n parameters.encodings[layerIndex].active = enabled;\n }\n else {\n _this._log.warn(\"invalid layer:\" + layerIndex + \", active:\" + enabled);\n }\n });\n }\n // Note(mpatwardhan): after publisher hints are applied, overwrite with default encodings\n // to disable any encoding that shouldn't have been enabled by publisher_hints.\n // When encodings===null (that is we are asked to reset encodings for replaceTrack)\n // along with disabling encodings, clear active flag for encodings that should not be disabled\n this._maybeUpdateEncodings(sender.track, parameters.encodings, encodings === null /* trackReplaced */);\n return sender.setParameters(parameters).then(function () { return 'OK'; }).catch(function (error) {\n _this._log.error('Failed to apply publisher hints:', error);\n return 'COULD_NOT_APPLY_HINT';\n });\n };\n /**\n * Add the {@link MediaTrackSender} to the {@link PeerConnectionV2}.\n * @param {MediaTrackSender} mediaTrackSender\n * @returns {void}\n */\n PeerConnectionV2.prototype.addMediaTrackSender = function (mediaTrackSender) {\n var _this = this;\n if (this._peerConnection.signalingState === 'closed' || this._rtpSenders.has(mediaTrackSender)) {\n return;\n }\n var transceiver = this._addOrUpdateTransceiver(mediaTrackSender.track);\n var sender = transceiver.sender;\n mediaTrackSender.addSender(sender, function (encodings) { return _this._setPublisherHint(mediaTrackSender, encodings); });\n this._rtpNewSenders.add(sender);\n this._rtpSenders.set(mediaTrackSender, sender);\n };\n /**\n * Close the {@link PeerConnectionV2}.\n * @returns {void}\n */\n PeerConnectionV2.prototype.close = function () {\n if (this._close()) {\n this._descriptionRevision++;\n this._localDescription = { type: 'close' };\n this.emit('description', this.getState());\n }\n };\n /**\n * Get the {@link DataTrackReceiver}s and the {@link MediaTrackReceiver}s on the\n * {@link PeerConnectionV2}.\n * @returns {Array} trackReceivers\n */\n PeerConnectionV2.prototype.getTrackReceivers = function () {\n return Array.from(this._dataTrackReceivers).concat(Array.from(this._mediaTrackReceivers));\n };\n /**\n * Get the {@link PeerConnectionV2}'s state (specifically, its description).\n * @returns {?object}\n */\n PeerConnectionV2.prototype.getState = function () {\n if (!this._localDescription) {\n return null;\n }\n // NOTE(mpatwardhan): Return most recent localDescription. If the most recent local description is an\n // answer, and this method is called for sending a \"sync\" message while the next remote offer is being processed,\n // we need to send the most recent stable description revision instead of the current description revision,\n // which is supposed to be for the next local answer.\n var localDescriptionRevision = this._localDescription.type === 'answer' ? this._lastStableDescriptionRevision : this._descriptionRevision;\n var localDescription = {\n type: this._localDescription.type,\n revision: localDescriptionRevision\n };\n if (this._localDescription.sdp) {\n localDescription.sdp = this._localDescription.sdp;\n }\n return {\n description: localDescription,\n id: this.id\n };\n };\n /**\n * Create an offer and set it on the {@link PeerConnectionV2}.\n * @returns {Promise}\n */\n PeerConnectionV2.prototype.offer = function () {\n var _this = this;\n if (this._needsAnswer || this._isRestartingIce) {\n this._shouldOffer = true;\n return Promise.resolve();\n }\n return this.bracket('offering', function (key) {\n _this.transition('updating', key);\n var promise = _this._needsAnswer || _this._isRestartingIce ? Promise.resolve() : _this._offer();\n return promise.then(function () {\n _this.tryTransition('open', key);\n }, function (error) {\n _this.tryTransition('open', key);\n throw error;\n });\n });\n };\n /**\n * Remove a {@link DataTrackSender} from the {@link PeerConnectionV2}.\n * @param {DataTrackSender} dataTrackSender\n * @returns {void}\n */\n PeerConnectionV2.prototype.removeDataTrackSender = function (dataTrackSender) {\n var dataChannel = this._dataChannels.get(dataTrackSender);\n if (dataChannel) {\n dataTrackSender.removeDataChannel(dataChannel);\n this._dataChannels.delete(dataTrackSender);\n dataChannel.close();\n }\n };\n /**\n * Remove the {@link MediaTrackSender} from the {@link PeerConnectionV2}.\n * @param {MediaTrackSender} mediaTrackSender\n * @returns {void}\n */\n PeerConnectionV2.prototype.removeMediaTrackSender = function (mediaTrackSender) {\n var sender = this._rtpSenders.get(mediaTrackSender);\n if (!sender) {\n return;\n }\n if (this._peerConnection.signalingState !== 'closed') {\n this._peerConnection.removeTrack(sender);\n }\n mediaTrackSender.removeSender(sender);\n // clean up any pending publisher hints associated with this mediaTrackSender.\n if (this._mediaTrackSenderToPublisherHints.has(mediaTrackSender)) {\n var queuedHint = this._mediaTrackSenderToPublisherHints.get(mediaTrackSender);\n queuedHint.deferred.resolve('UNKNOWN_TRACK');\n this._mediaTrackSenderToPublisherHints.delete(mediaTrackSender);\n }\n this._rtpNewSenders.delete(sender);\n this._rtpSenders.delete(mediaTrackSender);\n };\n /**\n * Set the RTCConfiguration on the underlying RTCPeerConnection.\n * @param {RTCConfiguration} configuration\n * @returns {void}\n */\n PeerConnectionV2.prototype.setConfiguration = function (configuration) {\n if (typeof this._peerConnection.setConfiguration === 'function') {\n this._peerConnection.setConfiguration(getConfiguration(configuration));\n }\n };\n /**\n * Set the ICE reconnect timeout period.\n * @param {number} period - Period in milliseconds.\n * @returns {this}\n */\n PeerConnectionV2.prototype.setIceReconnectTimeout = function (period) {\n this._iceReconnectTimeout.setDelay(period);\n this._log.debug('Updated ICE reconnection timeout period:', this._iceReconnectTimeout.delay);\n return this;\n };\n /**\n * Update the {@link PeerConnectionV2}.\n * @param {object} peerConnectionState\n * @returns {Promise}\n */\n PeerConnectionV2.prototype.update = function (peerConnectionState) {\n var _this = this;\n return this.bracket('updating', function (key) {\n if (_this.state === 'closed') {\n return Promise.resolve();\n }\n _this.transition('updating', key);\n var updates = [];\n if (peerConnectionState.ice) {\n updates.push(_this._updateIce(peerConnectionState.ice));\n }\n if (peerConnectionState.description) {\n updates.push(_this._updateDescription(peerConnectionState.description));\n }\n return Promise.all(updates).then(function () {\n _this.tryTransition('open', key);\n }, function (error) {\n _this.tryTransition('open', key);\n throw error;\n });\n });\n };\n /**\n * Get the {@link PeerConnectionV2}'s media statistics.\n * @returns {Promise}\n */\n PeerConnectionV2.prototype.getStats = function () {\n var _this = this;\n return getStatistics(this._peerConnection).then(function (response) { return rewriteTrackIds(_this, response); });\n };\n return PeerConnectionV2;\n}(StateMachine));\nfunction rewriteLocalTrackId(pcv2, stats) {\n var trackId = pcv2._getMediaTrackSenderId(stats.trackId);\n return Object.assign(stats, { trackId: trackId });\n}\nfunction rewriteTrackId(pcv2, stats) {\n var receiver = __spreadArray([], __read(pcv2._mediaTrackReceivers)).find(function (receiver) { return receiver.track.id === stats.trackId; });\n var trackId = receiver ? receiver.id : null;\n return Object.assign(stats, { trackId: trackId });\n}\nfunction rewriteTrackIds(pcv2, response) {\n return Object.assign(response, {\n remoteAudioTrackStats: response.remoteAudioTrackStats.map(function (stats) { return rewriteTrackId(pcv2, stats); }),\n remoteVideoTrackStats: response.remoteVideoTrackStats.map(function (stats) { return rewriteTrackId(pcv2, stats); }),\n localAudioTrackStats: response.localAudioTrackStats.map(function (stats) { return rewriteLocalTrackId(pcv2, stats); }),\n localVideoTrackStats: response.localVideoTrackStats.map(function (stats) { return rewriteLocalTrackId(pcv2, stats); }),\n });\n}\n/**\n * @event PeerConnectionV2#candidates\n * @param {object} candidates\n */\n/**\n * @event PeerConnectionV2#connectionStateChanged\n */\n/**\n * @event PeerConnectionV2#description\n * @param {object} description\n */\n/**\n * @event PeerConnectionV2#iceConnectionStateChanged\n */\n/**\n * @event PeerConnectionV2#trackAdded\n * @param {DataTrackReceiver|MediaTrackReceiver} trackReceiver\n */\nfunction getUfrag(description) {\n if (description.sdp) {\n var match = description.sdp.match(/^a=ice-ufrag:([a-zA-Z0-9+/]+)/m);\n if (match) {\n return match[1];\n }\n }\n return null;\n}\nfunction getConfiguration(configuration) {\n return Object.assign({\n bundlePolicy: 'max-bundle',\n rtcpMuxPolicy: 'require'\n }, configuration);\n}\n/**\n * Whether the MediaStreamTrack of the given RTCRTPSender is a non-ended\n * MediaStreamTrack of a given kind.\n * @private\n * @param {string} kind\n * @param {RTCRtpSender} sender\n * @return {boolean}\n */\nfunction isSenderOfKind(kind, sender) {\n var track = sender.track;\n return track && track.kind === kind && track.readyState !== 'ended';\n}\n/**\n * Preferred codecs.\n * @typedef {object} PreferredCodecs\n * @property {Array} audio\n * @property {Array} video\n */\nfunction filterOutMediaStreamIds(sdp) {\n return sdp.replace(/a=msid:[^ ]+ /g, 'a=msid:- ');\n}\n/**\n * Whether an RTCRtpTransceiver can be recycled.\n * @param {RTCRtpTransceiver} transceiver\n * @returns {boolean}\n */\nfunction shouldRecycleTransceiver(transceiver, pcv2) {\n return !transceiver.stopped\n && !pcv2._replaceTrackPromises.has(transceiver)\n && ['inactive', 'recvonly'].includes(transceiver.direction);\n}\n/**\n * Take a recycled RTCRtpTransceiver if available.\n * @param {PeerConnectionV2} pcv2\n * @param {Track.Kind} kind\n * @returns {?RTCRtpTransceiver}\n */\nfunction takeRecycledTransceiver(pcv2, kind) {\n var preferredCodecs = {\n audio: pcv2._preferredAudioCodecs.map(function (_a) {\n var codec = _a.codec;\n return codec.toLowerCase();\n }),\n video: pcv2._preferredVideoCodecs.map(function (_a) {\n var codec = _a.codec;\n return codec.toLowerCase();\n })\n }[kind];\n var recycledTransceivers = pcv2._recycledTransceivers[kind];\n var localCodec = preferredCodecs.find(function (codec) { return pcv2._localCodecs.has(codec); });\n if (!localCodec) {\n return recycledTransceivers.shift();\n }\n var transceiver = recycledTransceivers.find(function (transceiver) {\n var remoteCodecMap = pcv2._remoteCodecMaps.get(transceiver.mid);\n return remoteCodecMap && remoteCodecMap.has(localCodec);\n });\n if (transceiver) {\n recycledTransceivers.splice(recycledTransceivers.indexOf(transceiver), 1);\n }\n return transceiver;\n}\n/**\n * Update the set of locally supported {@link Codec}s.\n * @param pcv2\n * @returns {void}\n */\nfunction updateLocalCodecs(pcv2) {\n var description = pcv2._peerConnection.localDescription;\n if (!description || !description.sdp) {\n return;\n }\n getMediaSections(description.sdp).forEach(function (section) {\n var codecMap = createCodecMapForMediaSection(section);\n codecMap.forEach(function (pts, codec) { return pcv2._localCodecs.add(codec); });\n });\n}\n/**\n * Update the {@link Codec} maps for all m= sections in the remote {@link RTCSessionDescription}s.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction updateRemoteCodecMaps(pcv2) {\n var description = pcv2._peerConnection.remoteDescription;\n if (!description || !description.sdp) {\n return;\n }\n getMediaSections(description.sdp).forEach(function (section) {\n var matched = section.match(/^a=mid:(.+)$/m);\n if (!matched || !matched[1]) {\n return;\n }\n var mid = matched[1];\n var codecMap = createCodecMapForMediaSection(section);\n pcv2._remoteCodecMaps.set(mid, codecMap);\n });\n}\n/**\n * Update the list of recycled RTCRtpTransceivers.\n * @param {PeerConnectionV2} pcv2\n */\nfunction updateRecycledTransceivers(pcv2) {\n pcv2._recycledTransceivers.audio = [];\n pcv2._recycledTransceivers.video = [];\n pcv2._peerConnection.getTransceivers().forEach(function (transceiver) {\n if (shouldRecycleTransceiver(transceiver, pcv2)) {\n var track = transceiver.receiver.track;\n pcv2._recycledTransceivers[track.kind].push(transceiver);\n }\n });\n}\n/**\n * Perform certain updates after an SDP negotiation is completed.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction negotiationCompleted(pcv2) {\n updateRecycledTransceivers(pcv2);\n updateLocalCodecs(pcv2);\n updateRemoteCodecMaps(pcv2);\n updateEncodingParameters(pcv2).then(function () {\n // if there any any publisher hints queued, apply them now.\n pcv2._handleQueuedPublisherHints();\n });\n}\n/**\n * Update the RTCRtpEncodingParameters of all active RTCRtpSenders.\n * @param {PeerConnectionV2} pcv2\n * @returns {void}\n */\nfunction updateEncodingParameters(pcv2) {\n var _a = pcv2._encodingParameters, maxAudioBitrate = _a.maxAudioBitrate, maxVideoBitrate = _a.maxVideoBitrate;\n var maxBitrates = new Map([\n ['audio', maxAudioBitrate],\n ['video', maxVideoBitrate]\n ]);\n var promises = [];\n pcv2._peerConnection.getSenders().filter(function (sender) { return sender.track; }).forEach(function (sender) {\n var maxBitrate = maxBitrates.get(sender.track.kind);\n var params = sender.getParameters();\n if (maxBitrate === null || maxBitrate === 0) {\n removeMaxBitrate(params);\n }\n else if (pcv2._isChromeScreenShareTrack(sender.track)) {\n // NOTE(mpatwardhan): Sometimes (JSDK-2557) chrome does not send any bytes on screen track if MaxBitRate is set on it via setParameters,\n // To workaround this issue we will not apply maxBitrate if the track appears to be a screen share track created by chrome\n pcv2._log.warn(\"Not setting maxBitrate for \" + sender.track.kind + \" Track \" + sender.track.id + \" because it appears to be screen share track: \" + sender.track.label);\n }\n else {\n setMaxBitrate(params, maxBitrate);\n }\n if (!isFirefox && params.encodings.length > 0) {\n if (sender.track.kind === 'audio') {\n // NOTE(mmalavalli): \"priority\" is a per-sender property and not\n // a per-encoding-layer property. So, we set the value only on the first\n // encoding layer. Any attempt to set the value on subsequent encoding\n // layers (in the case of simulcast) will result in the Promise returned\n // by RTCRtpSender.setParameters() being rejected. With this, audio encoding\n // is prioritized the most.\n params.encodings[0].priority = 'high';\n }\n else if (pcv2._isChromeScreenShareTrack(sender.track)) {\n // NOTE(mmalavalli): Screen share encodings are prioritized more than those\n // of the camera.\n params.encodings[0].priority = 'medium';\n }\n if (pcv2._enableDscp) {\n // NOTE(mmalavalli): \"networkPriority\" is a per-sender property and not\n // a per-encoding-layer property. So, we set the value only on the first\n // encoding layer. Any attempt to set the value on subsequent encoding\n // layers (in the case of simulcast) will result in the Promise returned\n // by RTCRtpSender.setParameters() being rejected.\n params.encodings[0].networkPriority = 'high';\n }\n }\n // when a sender is reused, delete any active encodings set by server.\n var trackReplaced = pcv2._rtpNewSenders.has(sender);\n pcv2._maybeUpdateEncodings(sender.track, params.encodings, trackReplaced);\n pcv2._rtpNewSenders.delete(sender);\n var promise = sender.setParameters(params).catch(function (error) {\n pcv2._log.warn(\"Error while setting encodings parameters for \" + sender.track.kind + \" Track \" + sender.track.id + \": \" + (error.message || error.name));\n });\n promises.push(promise);\n });\n return Promise.all(promises);\n}\n/**\n * Remove maxBitrate from the RTCRtpSendParameters' encodings.\n * @param {RTCRtpSendParameters} params\n * @returns {void}\n */\nfunction removeMaxBitrate(params) {\n if (Array.isArray(params.encodings)) {\n params.encodings.forEach(function (encoding) { return delete encoding.maxBitrate; });\n }\n}\n/**\n * Set the given maxBitrate in the RTCRtpSendParameters' encodings.\n * @param {RTCRtpSendParameters} params\n * @param {number} maxBitrate\n * @returns {void}\n */\nfunction setMaxBitrate(params, maxBitrate) {\n if (isFirefox) {\n params.encodings = [{ maxBitrate: maxBitrate }];\n }\n else {\n params.encodings.forEach(function (encoding) {\n encoding.maxBitrate = maxBitrate;\n });\n }\n}\nmodule.exports = PeerConnectionV2;\n//# sourceMappingURL=peerconnection.js.map","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar _a = require('../'), difference = _a.difference, flatMap = _a.flatMap;\n/**\n * Create a random {@link SSRC}.\n * @returns {SSRC}\n */\nfunction createSSRC() {\n var ssrcMax = 0xffffffff;\n return String(Math.floor(Math.random() * ssrcMax));\n}\n/**\n * @property {string} cName\n * @property {boolean} isSimulcastEnabled\n * @property {Map} rtxPairs\n * @property {Set} primarySSRCs\n * @property {string} streamId\n * @property {Track.ID} trackId\n */\nvar TrackAttributes = /** @class */ (function () {\n /**\n * Construct a {@link MediaStreamTrack} attribute store.\n * @param {Track.ID} trackId - The MediaStreamTrack ID\n * @param {MediaStreamID} streamId - The MediaStream ID\n * @param {string} cName - The MediaStream cname\n */\n function TrackAttributes(trackId, streamId, cName) {\n Object.defineProperties(this, {\n cName: {\n enumerable: true,\n value: cName\n },\n isSimulcastEnabled: {\n enumerable: true,\n value: false,\n writable: true\n },\n primarySSRCs: {\n enumerable: true,\n value: new Set()\n },\n rtxPairs: {\n enumerable: true,\n value: new Map()\n },\n streamId: {\n enumerable: true,\n value: streamId\n },\n trackId: {\n enumerable: true,\n value: trackId\n }\n });\n }\n /**\n * Add {@link SimSSRC}s to the {@link TrackAttributes}.\n * @returns {void}\n */\n TrackAttributes.prototype.addSimulcastSSRCs = function () {\n if (this.isSimulcastEnabled) {\n return;\n }\n var simulcastSSRCs = [createSSRC(), createSSRC()];\n simulcastSSRCs.forEach(function (ssrc) {\n this.primarySSRCs.add(ssrc);\n }, this);\n if (this.rtxPairs.size) {\n simulcastSSRCs.forEach(function (ssrc) {\n this.rtxPairs.set(createSSRC(), ssrc);\n }, this);\n }\n };\n /**\n * Add the given {@link PrimarySSRC} or {@link RtxSSRC} to the {@link TrackAttributes}\n * and update the \"isSimulcastEnabled\" flag if it is also a {@link SimSSRC}.\n * @param {SSRC} ssrc - The {@link SSRC} to be added\n * @param {?PrimarySSRC} primarySSRC - The {@link PrimarySSRC}; if the given\n * {@link SSRC} itself is the {@link PrimarySSRC}, then this is set to null\n * @param {boolean} isSimSSRC - true if the given {@link SSRC} is a\n * {@link SimSSRC}; false otherwise\n * @returns {void}\n */\n TrackAttributes.prototype.addSSRC = function (ssrc, primarySSRC, isSimSSRC) {\n if (primarySSRC) {\n this.rtxPairs.set(ssrc, primarySSRC);\n }\n else {\n this.primarySSRCs.add(ssrc);\n }\n this.isSimulcastEnabled = this.isSimulcastEnabled || isSimSSRC;\n };\n /**\n * Construct the SDP lines for the {@link TrackAttributes}.\n * @param {boolean} [excludeRtx=false]\n * @returns {Array} Array of SDP lines\n */\n TrackAttributes.prototype.toSdpLines = function (excludeRtx) {\n var _this = this;\n var rtxPairs = excludeRtx\n ? []\n : Array.from(this.rtxPairs.entries()).map(function (rtxPair) { return rtxPair.reverse(); });\n var simSSRCs = Array.from(this.primarySSRCs.values());\n var ssrcs = rtxPairs.length ? flatMap(rtxPairs) : simSSRCs;\n var attrLines = flatMap(ssrcs, function (ssrc) { return [\n \"a=ssrc:\" + ssrc + \" cname:\" + _this.cName,\n \"a=ssrc:\" + ssrc + \" msid:\" + _this.streamId + \" \" + _this.trackId\n ]; });\n var rtxPairLines = rtxPairs.map(function (rtxPair) { return \"a=ssrc-group:FID \" + rtxPair.join(' '); });\n var simGroupLines = [\n \"a=ssrc-group:SIM \" + simSSRCs.join(' ')\n ];\n return rtxPairLines.concat(attrLines).concat(simGroupLines);\n };\n return TrackAttributes;\n}());\n/**\n * Get the matches for a given RegEx pattern.\n * @param {string} section - SDP media section\n * @param {string} pattern - RegEx pattern\n * @returns {Array>} - Array of pattern matches\n */\nfunction getMatches(section, pattern) {\n var matches = section.match(new RegExp(pattern, 'gm')) || [];\n return matches.map(function (match) {\n var matches = match.match(new RegExp(pattern)) || [];\n return matches.slice(1);\n });\n}\n/**\n * Get the {@link SimSSRC}s that belong to a simulcast group.\n * @param {string} section - SDP media section\n * @returns {Set} Set of simulcast {@link SSRC}s\n */\nfunction getSimulcastSSRCs(section) {\n var simGroupPattern = '^a=ssrc-group:SIM ([0-9]+) ([0-9]+) ([0-9]+)$';\n return new Set(flatMap(getMatches(section, simGroupPattern)));\n}\n/**\n * Get the value of the given attribute for an SSRC.\n * @param {string} section - SDP media section\n * @param {SSRC} ssrc - {@link SSRC} whose attribute's value is to be determinded\n * @param {string} attribute - {@link SSRC} attribute name\n * @param {string} - {@link SSRC} attribute value\n */\nfunction getSSRCAttribute(section, ssrc, attribute) {\n var pattern = \"a=ssrc:\" + ssrc + \" \" + attribute + \":(.+)\";\n return section.match(new RegExp(pattern))[1];\n}\n/**\n * Create a Map of {@link PrimarySSRC}s and their {@link RtxSSRC}s.\n * @param {string} section - SDP media section\n * @returns {Map} - Map of {@link RtxSSRC}s and their\n * corresponding {@link PrimarySSRC}s\n */\nfunction getSSRCRtxPairs(section) {\n var rtxPairPattern = '^a=ssrc-group:FID ([0-9]+) ([0-9]+)$';\n return new Map(getMatches(section, rtxPairPattern).map(function (pair) { return pair.reverse(); }));\n}\n/**\n * Create SSRC attribute tuples.\n * @param {string} section\n * @returns {Array<[SSRC, MediaStreamID, Track.ID]>}\n */\nfunction createSSRCAttributeTuples(section) {\n var _a = __read(flatMap(getMatches(section, '^a=msid:(.+) (.+)$')), 2), streamId = _a[0], trackId = _a[1];\n var ssrcs = flatMap(getMatches(section, '^a=ssrc:(.+) cname:.+$'));\n return ssrcs.map(function (ssrc) { return [ssrc, streamId, trackId]; });\n}\n/**\n * Create a Map of MediaStreamTrack IDs and their {@link TrackAttributes}.\n * @param {string} section - SDP media section\n * @returns {Map}\n */\nfunction createTrackIdsToAttributes(section) {\n var simSSRCs = getSimulcastSSRCs(section);\n var rtxPairs = getSSRCRtxPairs(section);\n var ssrcAttrTuples = createSSRCAttributeTuples(section);\n return ssrcAttrTuples.reduce(function (trackIdsToSSRCs, tuple) {\n var ssrc = tuple[0];\n var streamId = tuple[1];\n var trackId = tuple[2];\n var trackAttributes = trackIdsToSSRCs.get(trackId) || new TrackAttributes(trackId, streamId, getSSRCAttribute(section, ssrc, 'cname'));\n var primarySSRC = rtxPairs.get(ssrc) || null;\n trackAttributes.addSSRC(ssrc, primarySSRC, simSSRCs.has(ssrc));\n return trackIdsToSSRCs.set(trackId, trackAttributes);\n }, new Map());\n}\n/**\n * Apply simulcast settings to the given SDP media section.\n * @param {string} section - SDP media section\n * @param {Map} trackIdsToAttributes - Existing\n * map which will be updated for new MediaStreamTrack IDs\n * @returns {string} - The transformed SDP media section\n */\nfunction setSimulcastInMediaSection(section, trackIdsToAttributes) {\n var newTrackIdsToAttributes = createTrackIdsToAttributes(section);\n var newTrackIds = Array.from(newTrackIdsToAttributes.keys());\n var trackIds = Array.from(trackIdsToAttributes.keys());\n var trackIdsToAdd = difference(newTrackIds, trackIds);\n var trackIdsToIgnore = difference(trackIds, newTrackIds);\n // Update \"trackIdsToAttributes\" with TrackAttributes for new\n // MediaStreamTrack IDs.\n var trackAttributesToAdd = flatMap(trackIdsToAdd, function (trackId) { return newTrackIdsToAttributes.get(trackId); });\n trackAttributesToAdd.forEach(function (trackAttributes) {\n trackAttributes.addSimulcastSSRCs();\n trackIdsToAttributes.set(trackAttributes.trackId, trackAttributes);\n });\n // Get the SDP lines of the relevant MediaStreamTrack IDs from\n // \"trackIdsToAttributes\".\n trackIds = Array.from(trackIdsToAttributes.keys());\n var relevantTrackIds = difference(trackIds, trackIdsToIgnore);\n var relevantTrackAttributes = flatMap(relevantTrackIds, function (trackId) { return trackIdsToAttributes.get(trackId); });\n var excludeRtx = !section.match(/a=rtpmap:[0-9]+ rtx/);\n var relevantSdpLines = flatMap(relevantTrackAttributes, function (trackAttributes) { return trackAttributes.toSdpLines(excludeRtx); });\n // Add the simulcast SSRC SDP lines to the media section. The Set ensures\n // that the duplicates of the SSRC SDP lines that are in both \"section\" and\n // \"relevantSdpLines\" are removed.\n var sectionLines = flatMap(new Set(section.split('\\r\\n').concat(relevantSdpLines)));\n var xGoogleFlagConference = 'a=x-google-flag:conference';\n if (!section.match(xGoogleFlagConference)) {\n sectionLines.push(xGoogleFlagConference);\n }\n return sectionLines.join('\\r\\n');\n}\n/**\n * String representing a MediaStream ID.\n * @typedef {string} MediaStreamID\n */\n/**\n * String representing the SSRC of a MediaStreamTrack.\n * @typedef {string} SSRC\n */\n/**\n * Primary SSRC.\n * @typedef {SSRC} PrimarySSRC\n */\n/**\n * Retransmission SSRC.\n * @typedef {SSRC} RtxSSRC\n */\n/**\n * Simulcast SSRC.\n * @typedef {SSRC} SimSSRC\n */\nmodule.exports = setSimulcastInMediaSection;\n//# sourceMappingURL=simulcast.js.map","'use strict';\nvar Filter = require('../../util/filter');\n/**\n * An {@link IceBox} stores trickled ICE candidates. Candidates added to the\n * {@link IceBox} via {@link IceBox#update} are compared against previously\n * trickled candidates and only new candidates will be returned (assuming they\n * match the current ICE username fragment set by {@link IceBox#setUfrag}).\n * @property {?string} ufrag\n */\nvar IceBox = /** @class */ (function () {\n /**\n * Construct an {@link IceBox}.\n */\n function IceBox() {\n Object.defineProperties(this, {\n _filter: {\n value: new Filter({\n getKey: function getKey(iceState) {\n return iceState.ufrag;\n },\n isLessThanOrEqualTo: function isLessThanOrEqualTo(a, b) {\n return a.revision <= b.revision;\n }\n })\n },\n _ufrag: {\n writable: true,\n value: null\n },\n ufrag: {\n enumerable: true,\n get: function () {\n return this._ufrag;\n }\n }\n });\n }\n /**\n * Set the ICE username fragment on the {@link IceBox}. This method returns any\n * ICE candidates associated with the username fragment.\n * @param {string} ufrag\n * @returns {Array}\n */\n IceBox.prototype.setUfrag = function (ufrag) {\n this._ufrag = ufrag;\n var ice = this._filter.toMap().get(ufrag);\n return ice ? ice.candidates : [];\n };\n /**\n * Update the {@link IceBox}. This method returns any new ICE candidates\n * associated with the current username fragment.\n * @param {object} iceState\n * @returns {Array}\n */\n IceBox.prototype.update = function (iceState) {\n // NOTE(mroberts): The Server sometimes does not set the candidates property.\n iceState.candidates = iceState.candidates || [];\n var oldIceState = this._filter.toMap().get(iceState.ufrag);\n var oldCandidates = oldIceState ? oldIceState.candidates : [];\n return this._filter.update(iceState) && this._ufrag === iceState.ufrag\n ? iceState.candidates.slice(oldCandidates.length)\n : [];\n };\n return IceBox;\n}());\nmodule.exports = IceBox;\n//# sourceMappingURL=icebox.js.map","'use strict';\nvar Filter = /** @class */ (function () {\n function Filter(options) {\n options = Object.assign({\n getKey: function defaultGetKey(a) { return a; },\n getValue: function defaultGetValue(a) { return a; },\n isLessThanOrEqualTo: function defaultIsLessThanOrEqualTo(a, b) { return a <= b; }\n }, options);\n Object.defineProperties(this, {\n _getKey: {\n value: options.getKey\n },\n _getValue: {\n value: options.getValue\n },\n _isLessThanOrEqualTo: {\n value: options.isLessThanOrEqualTo\n },\n _map: {\n value: new Map()\n }\n });\n }\n Filter.prototype.toMap = function () {\n return new Map(this._map);\n };\n Filter.prototype.updateAndFilter = function (entries) {\n return entries.filter(this.update, this);\n };\n Filter.prototype.update = function (entry) {\n var key = this._getKey(entry);\n var value = this._getValue(entry);\n if (this._map.has(key) &&\n this._isLessThanOrEqualTo(value, this._map.get(key))) {\n return false;\n }\n this._map.set(key, value);\n return true;\n };\n return Filter;\n}());\nmodule.exports = Filter;\n//# sourceMappingURL=filter.js.map","'use strict';\nvar _a = require('../../util/constants'), ICE_ACTIVITY_CHECK_PERIOD_MS = _a.ICE_ACTIVITY_CHECK_PERIOD_MS, ICE_INACTIVITY_THRESHOLD_MS = _a.ICE_INACTIVITY_THRESHOLD_MS;\n/**\n * Monitors a {@link RTCPeerConnection}'s stats and notifies\n * caller when inactivity is detected.\n */\nvar IceConnectionMonitor = /** @class */ (function () {\n /**\n * Construct an {@link IceConnectionMonitor}.\n * @param {RTCPeerConnection} peerConnection\n * @param {object} [options]\n */\n function IceConnectionMonitor(peerConnection, options) {\n options = Object.assign({\n activityCheckPeriodMs: ICE_ACTIVITY_CHECK_PERIOD_MS,\n inactivityThresholdMs: ICE_INACTIVITY_THRESHOLD_MS,\n }, options);\n Object.defineProperties(this, {\n _activityCheckPeriodMs: {\n value: options.activityCheckPeriodMs\n },\n _inactivityThresholdMs: {\n value: options.inactivityThresholdMs\n },\n _lastActivity: {\n value: null,\n writable: true\n },\n _peerConnection: {\n value: peerConnection\n },\n _timer: {\n value: null,\n writable: true,\n },\n _onIceConnectionStateChanged: {\n value: null,\n writable: true\n }\n });\n }\n IceConnectionMonitor.prototype._getActivePairStat = function (stats) {\n var statsArray = Array.from(stats.values());\n var activePairStats = statsArray.find(function (stat) { return stat.type === 'candidate-pair' && stat.nominated; });\n // NOTE(mpatwardhan): sometimes (JSDK-2667) after getting disconnected while switching network\n // we may not find active pair. Treat this as 0 bytesReceived so that we count it towards inactivity.\n return activePairStats || {\n bytesReceived: 0,\n timestamp: Math.round((new Date()).getTime())\n };\n };\n /**\n * Get ICE connection stats, and extract received and send bytes.\n * @returns Promise\n */\n IceConnectionMonitor.prototype._getIceConnectionStats = function () {\n var _this = this;\n return this._peerConnection.getStats().then(function (stats) { return _this._getActivePairStat(stats); }).catch(function () {\n return null;\n });\n };\n /**\n * schedules/un-schedules inactivity callback.\n */\n IceConnectionMonitor.prototype._scheduleInactivityCallback = function (callback) {\n var _this = this;\n if (callback && this._onIceConnectionStateChanged === null) {\n // schedule callback\n this._onIceConnectionStateChanged = function () {\n if (_this._peerConnection.iceConnectionState === 'disconnected') {\n // eslint-disable-next-line callback-return\n callback();\n }\n };\n this._peerConnection.addEventListener('iceconnectionstatechange', this._onIceConnectionStateChanged);\n }\n else if (!callback && this._onIceConnectionStateChanged) {\n // unschedule callback\n this._peerConnection.removeEventListener('iceconnectionstatechange', this._onIceConnectionStateChanged);\n this._onIceConnectionStateChanged = null;\n }\n };\n /**\n * Start monitoring the ICE connection.\n * Monitors bytes received on active ice connection pair,\n * invokes onIceConnectionInactive when inactivity is detected.\n * @param {function} onIceConnectionInactive\n */\n IceConnectionMonitor.prototype.start = function (onIceConnectionInactive) {\n var _this = this;\n this.stop();\n this._timer = setInterval(function () {\n _this._getIceConnectionStats().then(function (iceStats) {\n if (!iceStats) {\n return;\n }\n // NOTE(mpatwardhan): We look at bytesReceived on active candidate pair as an indication of active ice connection.\n // As per spec (https://w3c.github.io/webrtc-stats/#dom-rtcicecandidatepairstats-bytesreceived) this value\n // includes RTCP traffic and is +ve even when there are no tracks subscribed to.\n if (!_this._lastActivity || _this._lastActivity.bytesReceived !== iceStats.bytesReceived) {\n _this._lastActivity = iceStats;\n // detected activity, cancel scheduled callback if any.\n _this._scheduleInactivityCallback(null);\n }\n if (iceStats.timestamp - _this._lastActivity.timestamp >= _this._inactivityThresholdMs) {\n // detected inactivity.\n if (_this._peerConnection.iceConnectionState === 'disconnected') {\n onIceConnectionInactive();\n }\n else if (_this._onIceConnectionStateChanged === null) {\n _this._scheduleInactivityCallback(onIceConnectionInactive);\n }\n }\n });\n }, this._activityCheckPeriodMs);\n };\n /**\n * Stop monitoring the ICE connection state.\n * @returns {void}\n */\n IceConnectionMonitor.prototype.stop = function () {\n this._scheduleInactivityCallback(null);\n if (this._timer !== null) {\n clearInterval(this._timer);\n this._timer = null;\n this._lastActivity = null;\n }\n };\n return IceConnectionMonitor;\n}());\nmodule.exports = IceConnectionMonitor;\n//# sourceMappingURL=iceconnectionmonitor.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar DataTrackTransceiver = require('./transceiver');\nvar DataTransport = require('./transport');\n/**\n * A {@link DataTrackReceiver} represents a {@link DataTrackTransceiver} over\n * which data can be received. Internally, it users a single RTCDataChannel to\n * receive data.\n * @extends DataTrackTransceiver\n * @emits DataTrackReceiver#message\n * @emits DataTrackReceiver#close\n */\nvar DataTrackReceiver = /** @class */ (function (_super) {\n __extends(DataTrackReceiver, _super);\n /**\n * Construct an {@link DataTrackReceiver}.\n * @param {RTCDataChannel} dataChannel\n */\n function DataTrackReceiver(dataChannel) {\n var _this = _super.call(this, dataChannel.label, dataChannel.maxPacketLifeTime, dataChannel.maxRetransmits, dataChannel.ordered) || this;\n Object.defineProperties(_this, {\n _dataChannel: {\n value: dataChannel\n }\n });\n // NOTE(mmalavalli): In Firefox, the default value for \"binaryType\" is \"blob\".\n // So, we set it to \"arraybuffer\" to ensure that it is consistent with Chrome\n // and Safari.\n dataChannel.binaryType = 'arraybuffer';\n dataChannel.addEventListener('message', function (event) {\n _this.emit('message', event.data);\n });\n dataChannel.addEventListener('close', function () {\n _this.emit('close');\n });\n return _this;\n }\n DataTrackReceiver.prototype.stop = function () {\n this._dataChannel.close();\n _super.prototype.stop.call(this);\n };\n /**\n * Create a {@link DataTransport} from the {@link DataTrackReceiver}.\n * @returns {DataTransport}\n */\n DataTrackReceiver.prototype.toDataTransport = function () {\n return new DataTransport(this._dataChannel);\n };\n return DataTrackReceiver;\n}(DataTrackTransceiver));\n/**\n * @event DataTrackReceiver#message\n * @param {string|ArrayBuffer} data\n */\n/**\n * @event DataTrackReceiver#close\n */\nmodule.exports = DataTrackReceiver;\n//# sourceMappingURL=receiver.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar EventEmitter = require('events').EventEmitter;\n/**\n * @classdesc A {@link DataTransport} implements {@link MediaSignalingTransport}\n * in terms of an RTCDataChannel.\n * @extends EventEmitter\n * @implements MediaSignalingTransport\n * @emits DataTransport#message\n */\nvar DataTransport = /** @class */ (function (_super) {\n __extends(DataTransport, _super);\n /**\n * Construct a {@link DataTransport}.\n * @param {RTCDataChannel} dataChannel\n */\n function DataTransport(dataChannel) {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _dataChannel: {\n value: dataChannel\n },\n _messageQueue: {\n value: []\n }\n });\n dataChannel.addEventListener('open', function () {\n _this._messageQueue.splice(0).forEach(function (message) { return _this._publish(message); });\n });\n dataChannel.addEventListener('message', function (_a) {\n var data = _a.data;\n try {\n var message = JSON.parse(data);\n _this.emit('message', message);\n }\n catch (error) {\n // Do nothing.\n }\n });\n _this.publish({ type: 'ready' });\n return _this;\n }\n /**\n * @param message\n * @private\n */\n DataTransport.prototype._publish = function (message) {\n var data = JSON.stringify(message);\n try {\n this._dataChannel.send(data);\n }\n catch (error) {\n // Do nothing.\n }\n };\n /**\n * Publish a message. Returns true if calling the method resulted in\n * publishing (or eventually publishing) the update.\n * @param {object} message\n * @returns {boolean}\n */\n DataTransport.prototype.publish = function (message) {\n var dataChannel = this._dataChannel;\n if (dataChannel.readyState === 'closing' || dataChannel.readyState === 'closed') {\n return false;\n }\n if (dataChannel.readyState === 'connecting') {\n this._messageQueue.push(message);\n return true;\n }\n this._publish(message);\n return true;\n };\n return DataTransport;\n}(EventEmitter));\n/**\n * The {@link DataTransport} received a message.\n * @event DataTransport#message\n * @param {object} message\n */\nmodule.exports = DataTransport;\n//# sourceMappingURL=transport.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaTrackTransceiver = require('./transceiver');\n/**\n * A {@link MediaTrackReceiver} represents a remote MediaStreamTrack.\n * @extends MediaTrackTransceiver\n */\nvar MediaTrackReceiver = /** @class */ (function (_super) {\n __extends(MediaTrackReceiver, _super);\n /**\n * Construct a {@link MediaTrackReceiver}.\n * @param {Track.ID} id - The MediaStreamTrack ID signaled through RSP/SDP\n * @param {MediaStreamTrack} mediaStreamTrack - The remote MediaStreamTrack\n */\n function MediaTrackReceiver(id, mediaStreamTrack) {\n return _super.call(this, id, mediaStreamTrack) || this;\n }\n return MediaTrackReceiver;\n}(MediaTrackTransceiver));\nmodule.exports = MediaTrackReceiver;\n//# sourceMappingURL=receiver.js.map","'use strict';\nvar getMediaSections = require('./').getMediaSections;\n/**\n * An {@link TrackMatcher} matches an RTCTrackEvent with a MediaStreamTrack\n * ID based on the MID of the underlying RTCRtpTransceiver.\n */\nvar TrackMatcher = /** @class */ (function () {\n /**\n * Construct an {@link TrackMatcher}.\n */\n function TrackMatcher() {\n Object.defineProperties(this, {\n _midsToTrackIds: {\n value: new Map(),\n writable: true\n }\n });\n }\n /**\n * Match a given MediaStreamTrack with its ID.\n * @param {RTCTrackEvent} event\n * @returns {?Track.ID}\n */\n TrackMatcher.prototype.match = function (event) {\n return this._midsToTrackIds.get(event.transceiver.mid) || null;\n };\n /**\n * Update the {@link TrackMatcher} with a new SDP.\n * @param {string} sdp\n */\n TrackMatcher.prototype.update = function (sdp) {\n var sections = getMediaSections(sdp, '(audio|video)');\n this._midsToTrackIds = sections.reduce(function (midsToTrackIds, section) {\n var midMatches = section.match(/^a=mid:(.+)$/m) || [];\n var trackIdMatches = section.match(/^a=msid:.+ (.+)$/m) || [];\n var mid = midMatches[1];\n var trackId = trackIdMatches[1];\n return mid && trackId ? midsToTrackIds.set(mid, trackId) : midsToTrackIds;\n }, this._midsToTrackIds);\n };\n return TrackMatcher;\n}());\nmodule.exports = TrackMatcher;\n//# sourceMappingURL=trackmatcher.js.map","'use strict';\nvar RTCSessionDescription = require('../../webrtc').RTCSessionDescription;\nvar _a = require('./'), createPtToCodecName = _a.createPtToCodecName, getMediaSections = _a.getMediaSections;\n/**\n * An RTX payload type\n * @typedef {PT} RtxPT\n */\n/**\n * A non-RTX payload type\n * @typedef {PT} NonRtxPT\n */\n/**\n * A Set with at least one element\n * @typedef {Set} NonEmptySet\n */\n/**\n * Apply the workaround for Issue 8329 to an RTCSessionDescriptionInit.\n * @param {RTCSessionDescriptionInit} description\n * @returns {RTCSessionDescription} newDescription\n */\nfunction workaround(description) {\n var descriptionInit = { type: description.type };\n if (description.type !== 'rollback') {\n descriptionInit.sdp = sdpWorkaround(description.sdp);\n }\n return new RTCSessionDescription(descriptionInit);\n}\n/**\n * @param {string} sdp\n * @returns {string} newSdp\n */\nfunction sdpWorkaround(sdp) {\n var mediaSections = getMediaSections(sdp);\n var session = sdp.split('\\r\\nm=')[0];\n return [session]\n .concat(mediaSections.map(mediaSectionWorkaround))\n .join('\\r\\n');\n}\n/**\n * @param {string} mediaSection\n * @returns {string} newMediaSection\n */\nfunction mediaSectionWorkaround(mediaSection) {\n var ptToCodecName = createPtToCodecName(mediaSection);\n mediaSection = deleteDuplicateRtxPts(mediaSection, ptToCodecName);\n var codecNameToPts = createCodecNameToPts(ptToCodecName);\n var rtxPts = codecNameToPts.get('rtx') || new Set();\n var invalidRtxPts = new Set();\n var rtxPtToAssociatedPt = createRtxPtToAssociatedPt(mediaSection, ptToCodecName, rtxPts, invalidRtxPts);\n var associatedPtToRtxPt = createAssociatedPtToRtxPt(rtxPtToAssociatedPt, invalidRtxPts);\n var unassociatedRtxPts = Array.from(invalidRtxPts);\n // NOTE(mroberts): We normalize to lowercase.\n var knownCodecNames = ['h264', 'vp8', 'vp9'];\n var unassociatedPts = knownCodecNames.reduce(function (unassociatedPts, codecName) {\n var pts = codecNameToPts.get(codecName) || new Set();\n return Array.from(pts).reduce(function (unassociatedPts, pt) { return associatedPtToRtxPt.has(pt)\n ? unassociatedPts\n : unassociatedPts.add(pt); }, unassociatedPts);\n }, new Set());\n unassociatedPts.forEach(function (pt) {\n if (unassociatedRtxPts.length) {\n var rtxPt = unassociatedRtxPts.shift();\n mediaSection = deleteFmtpAttributesForRtxPt(mediaSection, rtxPt);\n mediaSection = addFmtpAttributeForRtxPt(mediaSection, rtxPt, pt);\n }\n });\n unassociatedRtxPts.forEach(function (rtxPt) {\n mediaSection = deleteFmtpAttributesForRtxPt(mediaSection, rtxPt);\n mediaSection = deleteRtpmapAttributesForRtxPt(mediaSection, rtxPt);\n });\n return mediaSection;\n}\n/**\n * @param {string} mediaSection\n * @param {Map} ptToCodecName\n * @returns {string} newMediaSection\n */\nfunction deleteDuplicateRtxPts(mediaSection, ptToCodecName) {\n // NOTE(syerrapragada): In some cases Chrome produces an offer/answer\n // with duplicate \"rtx\" payload mapping in media section. When applied,\n // Chrome rejects the SDP. We workaround this by deleting duplicate\n // \"rtx\" mappings found in SDP.\n return Array.from(ptToCodecName.keys()).reduce(function (section, pt) {\n var rtpmapRegex = new RegExp(\"^a=rtpmap:\" + pt + \" rtx.+$\", 'gm');\n return (section.match(rtpmapRegex) || []).slice(ptToCodecName.get(pt) === 'rtx' ? 1 : 0).reduce(function (section, rtpmap) {\n var rtpmapRegex = new RegExp(\"\\r\\n\" + rtpmap);\n var fmtpmapRegex = new RegExp(\"\\r\\na=fmtp:\" + pt + \" apt=[0-9]+\");\n return section.replace(rtpmapRegex, '').replace(fmtpmapRegex, '');\n }, section);\n }, mediaSection);\n}\n/**\n * @param {Map} ptToCodecName\n * @returns {Map>} codecNameToPts\n */\nfunction createCodecNameToPts(ptToCodecName) {\n var codecNameToPts = new Map();\n ptToCodecName.forEach(function (codecName, pt) {\n var pts = codecNameToPts.get(codecName) || new Set();\n return codecNameToPts.set(codecName, pts.add(pt));\n });\n return codecNameToPts;\n}\n/**\n * @param {string} mediaSection\n * @param {Map} ptToCodecName\n * @param {Set} rtxPts\n * @param {Set} invalidRtxPts\n * @returns {Map} rtxPtToAssociatedPt\n */\nfunction createRtxPtToAssociatedPt(mediaSection, ptToCodecName, rtxPts, invalidRtxPts) {\n return Array.from(rtxPts).reduce(function (rtxPtToAssociatedPt, rtxPt) {\n var fmtpPattern = new RegExp(\"a=fmtp:\" + rtxPt + \" apt=(\\\\d+)\");\n var matches = mediaSection.match(fmtpPattern);\n if (!matches) {\n invalidRtxPts.add(rtxPt);\n return rtxPtToAssociatedPt;\n }\n var pt = Number.parseInt(matches[1]);\n if (!ptToCodecName.has(pt)) {\n // This is Issue 8329.\n invalidRtxPts.add(rtxPt);\n return rtxPtToAssociatedPt;\n }\n var codecName = ptToCodecName.get(pt);\n if (codecName === 'rtx') {\n // Strange\n invalidRtxPts.add(rtxPt);\n return rtxPtToAssociatedPt;\n }\n return rtxPtToAssociatedPt.set(rtxPt, pt);\n }, new Map());\n}\n/**\n * @param {string} mediaSection\n * @param {Map} rtxPtToAssociatedPt\n * @param {Set} invalidRtxPts\n * @returns {Map} associatedPtToRtxPt\n */\nfunction createAssociatedPtToRtxPt(rtxPtToAssociatedPt, invalidRtxPts) {\n // First, we construct a Map>.\n var associatedPtToRtxPts = Array.from(rtxPtToAssociatedPt).reduce(function (associatedPtToRtxPts, pair) {\n var rtxPt = pair[0];\n var pt = pair[1];\n var rtxPts = associatedPtToRtxPts.get(pt) || new Set();\n return associatedPtToRtxPts.set(pt, rtxPts.add(rtxPt));\n }, new Map());\n // Then, we filter down to a Map. Any RtxPTs that map to the\n // same NonRtxPT are removed and added to invalidRtxPts.\n return Array.from(associatedPtToRtxPts).reduce(function (associatedPtToRtxPt, pair) {\n var pt = pair[0];\n var rtxPts = Array.from(pair[1]);\n if (rtxPts.length > 1) {\n rtxPts.forEach(function (rtxPt) {\n invalidRtxPts.add(rtxPt);\n });\n return associatedPtToRtxPt;\n }\n return associatedPtToRtxPt.set(pt, rtxPts[0]);\n }, new Map());\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @returns {string} newMediaSection\n */\nfunction deleteFmtpAttributesForRtxPt(mediaSection, rtxPt) {\n var pattern = new RegExp(\"a=fmtp:\" + rtxPt + \".*\\r\\n\", 'gm');\n return mediaSection.replace(pattern, '');\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @returns {string} newMediaSection\n */\nfunction deleteRtpmapAttributesForRtxPt(mediaSection, rtxPt) {\n var pattern = new RegExp(\"a=rtpmap:\" + rtxPt + \".*\\r\\n\", 'gm');\n return mediaSection.replace(pattern, '');\n}\n/**\n * @param {string} mediaSection\n * @param {RtxPT} rtxPt\n * @param {NonRtxPT} pt\n * @returns {string} newMediaSection\n */\nfunction addFmtpAttributeForRtxPt(mediaSection, rtxPt, pt) {\n return mediaSection.endsWith('\\r\\n')\n ? mediaSection + \"a=fmtp:\" + rtxPt + \" apt=\" + pt + \"\\r\\n\"\n : mediaSection + \"\\r\\na=fmtp:\" + rtxPt + \" apt=\" + pt;\n}\nmodule.exports = workaround;\n//# sourceMappingURL=issue8329.js.map","/* eslint-disable no-console */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar DominantSpeakerSignaling = require('./dominantspeakersignaling');\nvar NetworkQualityMonitor = require('./networkqualitymonitor');\nvar NetworkQualitySignaling = require('./networkqualitysignaling');\nvar RecordingV2 = require('./recording');\nvar RoomSignaling = require('../room');\nvar RemoteParticipantV2 = require('./remoteparticipant');\nvar StatsReport = require('../../stats/statsreport');\nvar TrackPrioritySignaling = require('./trackprioritysignaling');\nvar TrackSwitchOffSignaling = require('./trackswitchoffsignaling');\nvar RenderHintsSignaling = require('./renderhintssignaling');\nvar PublisherHintsSignaling = require('./publisherhintsignaling.js');\nvar _a = require('../../util'), DEFAULT_SESSION_TIMEOUT_SEC = _a.constants.DEFAULT_SESSION_TIMEOUT_SEC, createBandwidthProfilePayload = _a.createBandwidthProfilePayload, defer = _a.defer, difference = _a.difference, filterObject = _a.filterObject, flatMap = _a.flatMap, oncePerTick = _a.oncePerTick;\nvar MovingAverageDelta = require('../../util/movingaveragedelta');\nvar createTwilioError = require('../../util/twilio-video-errors').createTwilioError;\nvar STATS_PUBLISH_INTERVAL_MS = 10000;\n/**\n * @extends RoomSignaling\n */\nvar RoomV2 = /** @class */ (function (_super) {\n __extends(RoomV2, _super);\n function RoomV2(localParticipant, initialState, transport, peerConnectionManager, options) {\n var _this = this;\n initialState.options = Object.assign({\n session_timeout: DEFAULT_SESSION_TIMEOUT_SEC\n }, initialState.options);\n options = Object.assign({\n DominantSpeakerSignaling: DominantSpeakerSignaling,\n NetworkQualityMonitor: NetworkQualityMonitor,\n NetworkQualitySignaling: NetworkQualitySignaling,\n RecordingSignaling: RecordingV2,\n RemoteParticipantV2: RemoteParticipantV2,\n TrackPrioritySignaling: TrackPrioritySignaling,\n TrackSwitchOffSignaling: TrackSwitchOffSignaling,\n bandwidthProfile: null,\n sessionTimeout: initialState.options.session_timeout * 1000,\n statsPublishIntervalMs: STATS_PUBLISH_INTERVAL_MS\n }, options);\n localParticipant.setBandwidthProfile(options.bandwidthProfile);\n var _a = initialState.options, signalingRegion = _a.signaling_region, _b = _a.audio_processors, audioProcessors = _b === void 0 ? [] : _b;\n localParticipant.setSignalingRegion(signalingRegion);\n if (audioProcessors.includes('krisp')) {\n // Note(mpatwardhan): we add rnnoise as allowed_processor to enable testing our pipeline e2e.\n audioProcessors.push('rnnoise');\n }\n localParticipant.setAudioProcessors(audioProcessors);\n peerConnectionManager.setIceReconnectTimeout(options.sessionTimeout);\n _this = _super.call(this, localParticipant, initialState.sid, initialState.name, options) || this;\n var getTrackReceiver = function (id) { return _this._getTrackReceiver(id); };\n var log = _this._log;\n Object.defineProperties(_this, {\n _disconnectedParticipantRevisions: {\n value: new Map()\n },\n _NetworkQualityMonitor: {\n value: options.NetworkQualityMonitor\n },\n _lastBandwidthProfileRevision: {\n value: localParticipant.bandwidthProfileRevision,\n writable: true\n },\n _mediaStatesWarningsRevision: {\n value: 0,\n writable: true\n },\n _networkQualityMonitor: {\n value: null,\n writable: true\n },\n _networkQualityConfiguration: {\n value: localParticipant.networkQualityConfiguration\n },\n _peerConnectionManager: {\n value: peerConnectionManager\n },\n _published: {\n value: new Map()\n },\n _publishedRevision: {\n value: 0,\n writable: true\n },\n _RemoteParticipantV2: {\n value: options.RemoteParticipantV2\n },\n _subscribed: {\n value: new Map()\n },\n _subscribedRevision: {\n value: 0,\n writable: true\n },\n _subscriptionFailures: {\n value: new Map()\n },\n _dominantSpeakerSignaling: {\n value: new options.DominantSpeakerSignaling(getTrackReceiver, { log: log })\n },\n _networkQualitySignaling: {\n value: new options.NetworkQualitySignaling(getTrackReceiver, localParticipant.networkQualityConfiguration, { log: log })\n },\n _renderHintsSignaling: {\n value: new RenderHintsSignaling(getTrackReceiver, { log: log }),\n },\n _publisherHintsSignaling: {\n value: new PublisherHintsSignaling(getTrackReceiver, { log: log }),\n },\n _trackPrioritySignaling: {\n value: new options.TrackPrioritySignaling(getTrackReceiver, { log: log }),\n },\n _trackSwitchOffSignaling: {\n value: new options.TrackSwitchOffSignaling(getTrackReceiver, { log: log }),\n },\n _pendingSwitchOffStates: {\n value: new Map()\n },\n _transport: {\n value: transport\n },\n _trackReceiverDeferreds: {\n value: new Map()\n },\n mediaRegion: {\n enumerable: true,\n value: initialState.options.media_region || null\n }\n });\n _this._initTrackSwitchOffSignaling();\n _this._initDominantSpeakerSignaling();\n _this._initNetworkQualityMonitorSignaling();\n _this._initPublisherHintSignaling();\n handleLocalParticipantEvents(_this, localParticipant);\n handlePeerConnectionEvents(_this, peerConnectionManager);\n handleTransportEvents(_this, transport);\n periodicallyPublishStats(_this, transport, options.statsPublishIntervalMs);\n _this._update(initialState);\n // NOTE(mpatwardhan) after initial state we know if publisher_hints are enabled or not\n // if they are not enabled. we need to undo simulcast that was enabled with initial offer.\n _this._peerConnectionManager.setEffectiveAdaptiveSimulcast(_this._publisherHintsSignaling.isSetup);\n return _this;\n }\n Object.defineProperty(RoomV2.prototype, \"connectionState\", {\n /**\n * The PeerConnection state.\n * @property {RTCPeerConnectionState}\n */\n get: function () {\n return this._peerConnectionManager.connectionState;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RoomV2.prototype, \"signalingConnectionState\", {\n /**\n * The Signaling Connection State.\n * @property {string} - \"connected\", \"reconnecting\", \"disconnected\"\n */\n get: function () {\n return this._transport.state === 'syncing'\n ? 'reconnecting'\n : this._transport.state;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RoomV2.prototype, \"iceConnectionState\", {\n /**\n * The Ice Connection State.\n * @property {RTCIceConnectionState}\n */\n get: function () {\n return this._peerConnectionManager.iceConnectionState;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @private\n */\n RoomV2.prototype._deleteTrackReceiverDeferred = function (id) {\n return this._trackReceiverDeferreds.delete(id);\n };\n /**\n * @private\n */\n RoomV2.prototype._getOrCreateTrackReceiverDeferred = function (id) {\n var deferred = this._trackReceiverDeferreds.get(id) || defer();\n var trackReceivers = this._peerConnectionManager.getTrackReceivers();\n // NOTE(mmalavalli): In Firefox, there can be instances where a MediaStreamTrack\n // for the given Track ID already exists, for example, when a Track is removed\n // and added back. If that is the case, then we should resolve 'deferred'.\n var trackReceiver = trackReceivers.find(function (trackReceiver) { return trackReceiver.id === id && trackReceiver.readyState !== 'ended'; });\n if (trackReceiver) {\n deferred.resolve(trackReceiver);\n }\n else {\n // NOTE(mmalavalli): Only add the 'deferred' to the map if it's not\n // resolved. This will prevent old copies of the MediaStreamTrack from\n // being used when the remote peer removes and re-adds a MediaStreamTrack.\n this._trackReceiverDeferreds.set(id, deferred);\n }\n return deferred;\n };\n /**\n * @private\n */\n RoomV2.prototype._addTrackReceiver = function (trackReceiver) {\n var deferred = this._getOrCreateTrackReceiverDeferred(trackReceiver.id);\n deferred.resolve(trackReceiver);\n return this;\n };\n /**\n * @private\n */\n RoomV2.prototype._disconnect = function (error) {\n var didDisconnect = _super.prototype._disconnect.call(this, error);\n if (didDisconnect) {\n this._teardownNetworkQualityMonitor();\n this._transport.disconnect();\n this._peerConnectionManager.close();\n }\n this.localParticipant.tracks.forEach(function (track) {\n track.publishFailed(error || new Error('LocalParticipant disconnected'));\n });\n return didDisconnect;\n };\n /**\n * @private\n */\n RoomV2.prototype._getTrackReceiver = function (id) {\n var _this = this;\n return this._getOrCreateTrackReceiverDeferred(id).promise.then(function (trackReceiver) {\n _this._deleteTrackReceiverDeferred(id);\n return trackReceiver;\n });\n };\n /**\n * @private\n */\n RoomV2.prototype._getInitialTrackSwitchOffState = function (trackSid) {\n var initiallySwitchedOff = this._pendingSwitchOffStates.get(trackSid) || false;\n this._pendingSwitchOffStates.delete(trackSid);\n if (initiallySwitchedOff) {\n this._log.warn(\"[\" + trackSid + \"] was initially switched off! \");\n }\n return initiallySwitchedOff;\n };\n /**\n * @private\n */\n RoomV2.prototype._getTrackSidsToTrackSignalings = function () {\n var trackSidsToTrackSignalings = flatMap(this.participants, function (participant) { return Array.from(participant.tracks); });\n return new Map(trackSidsToTrackSignalings);\n };\n /**\n * @private\n */\n RoomV2.prototype._getOrCreateRemoteParticipant = function (participantState) {\n var _this = this;\n var RemoteParticipantV2 = this._RemoteParticipantV2;\n var participant = this.participants.get(participantState.sid);\n var self = this;\n if (!participant) {\n participant = new RemoteParticipantV2(participantState, function (trackSid) { return _this._getInitialTrackSwitchOffState(trackSid); }, function (trackSid, priority) { return _this._trackPrioritySignaling.sendTrackPriorityUpdate(trackSid, 'subscribe', priority); }, function (trackSid, hint) { return _this._renderHintsSignaling.setTrackHint(trackSid, hint); }, function (trackSid) { return _this._renderHintsSignaling.clearTrackHint(trackSid); });\n participant.on('stateChanged', function stateChanged(state) {\n if (state === 'disconnected') {\n participant.removeListener('stateChanged', stateChanged);\n self.participants.delete(participant.sid);\n self._disconnectedParticipantRevisions.set(participant.sid, participant.revision);\n }\n });\n this.connectParticipant(participant);\n }\n return participant;\n };\n /**\n * @private\n */\n RoomV2.prototype._getState = function () {\n return {\n participant: this.localParticipant.getState()\n };\n };\n /**\n * @private\n */\n RoomV2.prototype._maybeAddBandwidthProfile = function (update) {\n var _a = this.localParticipant, bandwidthProfile = _a.bandwidthProfile, bandwidthProfileRevision = _a.bandwidthProfileRevision;\n if (bandwidthProfile && this._lastBandwidthProfileRevision < bandwidthProfileRevision) {\n this._lastBandwidthProfileRevision = bandwidthProfileRevision;\n return Object.assign({\n bandwidth_profile: createBandwidthProfilePayload(bandwidthProfile)\n }, update);\n }\n return update;\n };\n /**\n * @private\n */\n RoomV2.prototype._publishNewLocalParticipantState = function () {\n this._transport.publish(this._maybeAddBandwidthProfile(this._getState()));\n };\n /**\n * @private\n */\n RoomV2.prototype._publishPeerConnectionState = function (peerConnectionState) {\n /* eslint camelcase:0 */\n this._transport.publish(Object.assign({\n peer_connections: [peerConnectionState]\n }, this._getState()));\n };\n /**\n * @private\n */\n RoomV2.prototype._update = function (roomState) {\n var _this = this;\n if (roomState.subscribed && roomState.subscribed.revision > this._subscribedRevision) {\n this._subscribedRevision = roomState.subscribed.revision;\n roomState.subscribed.tracks.forEach(function (trackState) {\n if (trackState.id) {\n _this._subscriptionFailures.delete(trackState.sid);\n _this._subscribed.set(trackState.sid, trackState.id);\n }\n else if (trackState.error && !_this._subscriptionFailures.has(trackState.sid)) {\n _this._subscriptionFailures.set(trackState.sid, trackState.error);\n }\n });\n var subscribedTrackSids_1 = new Set(roomState.subscribed.tracks\n .filter(function (trackState) { return !!trackState.id; })\n .map(function (trackState) { return trackState.sid; }));\n this._subscribed.forEach(function (trackId, trackSid) {\n if (!subscribedTrackSids_1.has(trackSid)) {\n _this._subscribed.delete(trackSid);\n }\n });\n }\n var participantsToKeep = new Set();\n // eslint-disable-next-line no-warning-comments\n // TODO(mroberts): Remove me once the Server is fixed.\n (roomState.participants || []).forEach(function (participantState) {\n if (participantState.sid === _this.localParticipant.sid) {\n return;\n }\n // NOTE(mmalavalli): If the incoming revision for a disconnected Participant is less than or\n // equal to the revision when it was disconnected, then the state is old and can be ignored.\n // Otherwise, the Participant was most likely disconnected in a Large Group Room when it\n // stopped publishing media, and hence needs to be re-added.\n var disconnectedParticipantRevision = _this._disconnectedParticipantRevisions.get(participantState.sid);\n if (disconnectedParticipantRevision && participantState.revision <= disconnectedParticipantRevision) {\n return;\n }\n if (disconnectedParticipantRevision) {\n _this._disconnectedParticipantRevisions.delete(participantState.sid);\n }\n var participant = _this._getOrCreateRemoteParticipant(participantState);\n participant.update(participantState);\n participantsToKeep.add(participant);\n });\n if (roomState.type === 'synced') {\n this.participants.forEach(function (participant) {\n if (!participantsToKeep.has(participant)) {\n participant.disconnect();\n }\n });\n }\n handleSubscriptions(this);\n // eslint-disable-next-line no-warning-comments\n // TODO(mroberts): Remove me once the Server is fixed.\n /* eslint camelcase:0 */\n if (roomState.peer_connections) {\n this._peerConnectionManager.update(roomState.peer_connections, roomState.type === 'synced');\n }\n if (roomState.recording) {\n this.recording.update(roomState.recording);\n }\n if (roomState.published && roomState.published.revision > this._publishedRevision) {\n this._publishedRevision = roomState.published.revision;\n roomState.published.tracks.forEach(function (track) {\n if (track.sid) {\n _this._published.set(track.id, track.sid);\n }\n });\n this.localParticipant.update(roomState.published);\n }\n if (roomState.participant) {\n this.localParticipant.connect(roomState.participant.sid, roomState.participant.identity);\n }\n [\n this._dominantSpeakerSignaling,\n this._networkQualitySignaling,\n this._trackPrioritySignaling,\n this._trackSwitchOffSignaling,\n this._renderHintsSignaling,\n this._publisherHintsSignaling\n ].forEach(function (mediaSignaling) {\n var channel = mediaSignaling.channel;\n if (!mediaSignaling.isSetup\n && roomState.media_signaling\n && roomState.media_signaling[channel]\n && roomState.media_signaling[channel].transport\n && roomState.media_signaling[channel].transport.type === 'data-channel') {\n mediaSignaling.setup(roomState.media_signaling[channel].transport.label);\n }\n });\n if (roomState.type === 'warning' && roomState.states &&\n roomState.states.revision > this._mediaStatesWarningsRevision) {\n this._mediaStatesWarningsRevision = roomState.states.revision;\n this.localParticipant.updateMediaStates(roomState.states);\n }\n return this;\n };\n RoomV2.prototype._initPublisherHintSignaling = function () {\n var _this = this;\n this._publisherHintsSignaling.on('updated', function (hints, id) {\n Promise.all(hints.map(function (hint) {\n return _this.localParticipant.setPublisherHint(hint.track, hint.encodings).then(function (result) {\n return { track: hint.track, result: result };\n });\n })).then(function (hintResponses) {\n _this._publisherHintsSignaling.sendHintResponse({ id: id, hints: hintResponses });\n });\n });\n var handleReplaced = function (track) {\n if (track.kind === 'video') {\n track.trackTransceiver.on('replaced', function () {\n _this._publisherHintsSignaling.sendTrackReplaced({ trackSid: track.sid });\n });\n }\n };\n // hook up for any existing and new tracks getting replaced.\n Array.from(this.localParticipant.tracks.values()).forEach(function (track) { return handleReplaced(track); });\n this.localParticipant.on('trackAdded', function (track) { return handleReplaced(track); });\n };\n RoomV2.prototype._initTrackSwitchOffSignaling = function () {\n var _this = this;\n this._trackSwitchOffSignaling.on('updated', function (tracksOff, tracksOn) {\n try {\n _this._log.debug('received trackSwitch: ', { tracksOn: tracksOn, tracksOff: tracksOff });\n var trackUpdates_1 = new Map();\n tracksOn.forEach(function (trackSid) { return trackUpdates_1.set(trackSid, true); });\n tracksOff.forEach(function (trackSid) {\n if (trackUpdates_1.get(trackSid)) {\n // NOTE(mpatwardhan): This means that VIDEO-3762 has been reproduced.\n _this._log.warn(trackSid + \" is DUPLICATED in both tracksOff and tracksOn list\");\n }\n trackUpdates_1.set(trackSid, false);\n });\n _this.participants.forEach(function (participant) {\n participant.tracks.forEach(function (track) {\n var isOn = trackUpdates_1.get(track.sid);\n if (typeof isOn !== 'undefined') {\n track.setSwitchedOff(!isOn);\n trackUpdates_1.delete(track.sid);\n }\n });\n });\n // NOTE(mpatwardhan): Cache any notification about the tracks that we do not yet know about.\n trackUpdates_1.forEach(function (isOn, trackSid) { return _this._pendingSwitchOffStates.set(trackSid, !isOn); });\n }\n catch (ex) {\n _this._log.error('error processing track switch off:', ex);\n }\n });\n };\n RoomV2.prototype._initDominantSpeakerSignaling = function () {\n var _this = this;\n this._dominantSpeakerSignaling.on('updated', function () { return _this.setDominantSpeaker(_this._dominantSpeakerSignaling.loudestParticipantSid); });\n };\n RoomV2.prototype._initNetworkQualityMonitorSignaling = function () {\n var _this = this;\n this._networkQualitySignaling.on('ready', function () {\n var networkQualityMonitor = new _this._NetworkQualityMonitor(_this._peerConnectionManager, _this._networkQualitySignaling);\n _this._networkQualityMonitor = networkQualityMonitor;\n networkQualityMonitor.on('updated', function () {\n if (_this.iceConnectionState === 'failed') {\n return;\n }\n _this.localParticipant.setNetworkQualityLevel(networkQualityMonitor.level, networkQualityMonitor.levels);\n _this.participants.forEach(function (participant) {\n var levels = networkQualityMonitor.remoteLevels.get(participant.sid);\n if (levels) {\n participant.setNetworkQualityLevel(levels.level, levels);\n }\n });\n });\n networkQualityMonitor.start();\n });\n this._networkQualitySignaling.on('teardown', function () { return _this._teardownNetworkQualityMonitor(); });\n };\n RoomV2.prototype._teardownNetworkQualityMonitor = function () {\n if (this._networkQualityMonitor) {\n this._networkQualityMonitor.stop();\n this._networkQualityMonitor = null;\n }\n };\n /**\n * Get the {@link RoomV2}'s media statistics.\n * @returns {Promise.>}\n */\n RoomV2.prototype.getStats = function () {\n var _this = this;\n return this._peerConnectionManager.getStats().then(function (responses) {\n return new Map(Array.from(responses).map(function (_a) {\n var _b = __read(_a, 2), id = _b[0], response = _b[1];\n return [id, Object.assign({}, response, {\n localAudioTrackStats: filterAndAddLocalTrackSids(_this, response.localAudioTrackStats),\n localVideoTrackStats: filterAndAddLocalTrackSids(_this, response.localVideoTrackStats),\n remoteAudioTrackStats: filterAndAddRemoteTrackSids(_this, response.remoteAudioTrackStats),\n remoteVideoTrackStats: filterAndAddRemoteTrackSids(_this, response.remoteVideoTrackStats)\n })];\n }));\n });\n };\n return RoomV2;\n}(RoomSignaling));\n/**\n * Filter out {@link TrackStats} that aren't in the collection while also\n * stamping their Track SIDs.\n * @param {Map} idToSid\n * @param {Array} trackStats\n * @returns {Array}\n */\nfunction filterAndAddTrackSids(idToSid, trackStats) {\n return trackStats.reduce(function (trackStats, trackStat) {\n var trackSid = idToSid.get(trackStat.trackId);\n return trackSid\n ? [Object.assign({}, trackStat, { trackSid: trackSid })].concat(trackStats)\n : trackStats;\n }, []);\n}\n/**\n * Filter out {@link LocalTrackStats} that aren't currently published while also\n * stamping their Track SIDs.\n * @param {RoomV2} roomV2\n * @param {Array} localTrackStats\n * @returns {Array}\n */\nfunction filterAndAddLocalTrackSids(roomV2, localTrackStats) {\n return filterAndAddTrackSids(roomV2._published, localTrackStats);\n}\n/**\n * Filter out {@link RemoteTrackStats} that aren't currently subscribed while\n * also stamping their Track SIDs.\n * @param {RoomV2} roomV2\n * @param {Array} remoteTrackStats\n * @returns {Array}\n */\nfunction filterAndAddRemoteTrackSids(roomV2, remoteTrackStats) {\n var idToSid = new Map(Array.from(roomV2._subscribed.entries()).map(function (_a) {\n var _b = __read(_a, 2), sid = _b[0], id = _b[1];\n return [id, sid];\n }));\n return filterAndAddTrackSids(idToSid, remoteTrackStats);\n}\n/**\n * @typedef {object} RoomV2#Representation\n * @property {string} name\n * @property {LocalParticipantV2#Representation} participant\n * @property {?Array} participants\n * @property {?Array} peer_connections\n * @property {?RecordingV2#Representation} recording\n * @property {string} sid\n */\nfunction handleLocalParticipantEvents(roomV2, localParticipant) {\n var localParticipantUpdated = oncePerTick(function () {\n roomV2._publishNewLocalParticipantState();\n });\n var renegotiate = oncePerTick(function () {\n var trackSenders = flatMap(localParticipant.tracks, function (trackV2) { return trackV2.trackTransceiver; });\n roomV2._peerConnectionManager.setTrackSenders(trackSenders);\n });\n localParticipant.on('trackAdded', renegotiate);\n localParticipant.on('trackRemoved', renegotiate);\n localParticipant.on('updated', localParticipantUpdated);\n roomV2.on('stateChanged', function stateChanged(state) {\n if (state === 'disconnected') {\n localParticipant.removeListener('trackAdded', renegotiate);\n localParticipant.removeListener('trackRemoved', renegotiate);\n localParticipant.removeListener('updated', localParticipantUpdated);\n roomV2.removeListener('stateChanged', stateChanged);\n localParticipant.disconnect();\n }\n });\n roomV2.on('signalingConnectionStateChanged', function () {\n var localParticipant = roomV2.localParticipant, signalingConnectionState = roomV2.signalingConnectionState;\n var identity = localParticipant.identity, sid = localParticipant.sid;\n switch (signalingConnectionState) {\n case 'connected':\n localParticipant.connect(sid, identity);\n break;\n case 'reconnecting':\n localParticipant.reconnecting();\n break;\n }\n });\n}\nfunction handlePeerConnectionEvents(roomV2, peerConnectionManager) {\n peerConnectionManager.on('description', function onDescription(description) {\n roomV2._publishPeerConnectionState(description);\n });\n peerConnectionManager.dequeue('description');\n peerConnectionManager.on('candidates', function onCandidates(candidates) {\n roomV2._publishPeerConnectionState(candidates);\n });\n peerConnectionManager.dequeue('candidates');\n peerConnectionManager.on('trackAdded', roomV2._addTrackReceiver.bind(roomV2));\n peerConnectionManager.dequeue('trackAdded');\n peerConnectionManager.getTrackReceivers().forEach(roomV2._addTrackReceiver, roomV2);\n peerConnectionManager.on('connectionStateChanged', function () {\n roomV2.emit('connectionStateChanged');\n });\n peerConnectionManager.on('iceConnectionStateChanged', function () {\n roomV2.emit('iceConnectionStateChanged');\n if (roomV2.iceConnectionState === 'failed') {\n if (roomV2.localParticipant.networkQualityLevel !== null) {\n roomV2.localParticipant.setNetworkQualityLevel(0);\n }\n roomV2.participants.forEach(function (participant) {\n if (participant.networkQualityLevel !== null) {\n participant.setNetworkQualityLevel(0);\n }\n });\n }\n });\n}\nfunction handleTransportEvents(roomV2, transport) {\n transport.on('message', roomV2._update.bind(roomV2));\n transport.on('stateChanged', function stateChanged(state, error) {\n if (state === 'disconnected') {\n if (roomV2.state !== 'disconnected') {\n roomV2._disconnect(error);\n }\n transport.removeListener('stateChanged', stateChanged);\n }\n roomV2.emit('signalingConnectionStateChanged');\n });\n}\n/**\n * Periodically publish {@link StatsReport}s.\n * @private\n * @param {RoomV2} roomV2\n * @param {Transport} transport\n * @param {Number} intervalMs\n */\nfunction periodicallyPublishStats(roomV2, transport, intervalMs) {\n var movingAverageDeltas = new Map();\n var oddPublishCount = false;\n var interval = setInterval(function () {\n roomV2.getStats().then(function (stats) {\n oddPublishCount = !oddPublishCount;\n stats.forEach(function (response, id) {\n // NOTE(mmalavalli): A StatsReport is used to publish a \"stats-report\"\n // event instead of using StandardizedStatsResponse directly because\n // StatsReport will add zeros to properties that do not exist.\n var report = new StatsReport(id, response, true /* prepareForInsights */);\n // NOTE(mmalavalli): Since A/V sync metrics are not part of the StatsReport class,\n // we add them to the insights payload here.\n transport.publishEvent('quality', 'stats-report', 'info', {\n audioTrackStats: report.remoteAudioTrackStats.map(function (trackStat, i) {\n return addAVSyncMetricsToRemoteTrackStats(trackStat, response.remoteAudioTrackStats[i], movingAverageDeltas);\n }),\n localAudioTrackStats: report.localAudioTrackStats.map(function (trackStat, i) {\n return addAVSyncMetricsToLocalTrackStats(trackStat, response.localAudioTrackStats[i], movingAverageDeltas);\n }),\n localVideoTrackStats: report.localVideoTrackStats.map(function (trackStat, i) {\n return addAVSyncMetricsToLocalTrackStats(trackStat, response.localVideoTrackStats[i], movingAverageDeltas);\n }),\n peerConnectionId: report.peerConnectionId,\n videoTrackStats: report.remoteVideoTrackStats.map(function (trackStat, i) {\n return addAVSyncMetricsToRemoteTrackStats(trackStat, response.remoteVideoTrackStats[i], movingAverageDeltas);\n }),\n });\n // NOTE(mmalavalli): Clean up entries for Tracks that are no longer published or subscribed to.\n var keys = flatMap([\n 'localAudioTrackStats',\n 'localVideoTrackStats',\n 'remoteAudioTrackStats',\n 'remoteVideoTrackStats'\n ], function (prop) { return report[prop].map(function (_a) {\n var ssrc = _a.ssrc, trackSid = _a.trackSid;\n return trackSid + \"+\" + ssrc;\n }); });\n var movingAverageDeltaKeysToBeRemoved = difference(Array.from(movingAverageDeltas.keys()), keys);\n movingAverageDeltaKeysToBeRemoved.forEach(function (key) { return movingAverageDeltas.delete(key); });\n if (oddPublishCount) {\n // NOTE(mmalavalli): null properties of the \"active-ice-candidate-pair\"\n // payload are assigned default values until the Insights gateway\n // accepts null values.\n var activeIceCandidatePair = replaceNullsWithDefaults(response.activeIceCandidatePair, report.peerConnectionId);\n transport.publishEvent('quality', 'active-ice-candidate-pair', 'info', activeIceCandidatePair);\n }\n });\n }, function () {\n // Do nothing.\n });\n }, intervalMs);\n roomV2.on('stateChanged', function onStateChanged(state) {\n if (state === 'disconnected') {\n clearInterval(interval);\n roomV2.removeListener('stateChanged', onStateChanged);\n }\n });\n}\nfunction handleSubscriptions(room) {\n var trackSidsToTrackSignalings = room._getTrackSidsToTrackSignalings();\n room._subscriptionFailures.forEach(function (error, trackSid) {\n var trackSignaling = trackSidsToTrackSignalings.get(trackSid);\n if (trackSignaling) {\n room._subscriptionFailures.delete(trackSid);\n trackSignaling.subscribeFailed(createTwilioError(error.code, error.message));\n }\n });\n trackSidsToTrackSignalings.forEach(function (trackSignaling) {\n var trackId = room._subscribed.get(trackSignaling.sid);\n if (!trackId || (trackSignaling.isSubscribed && trackSignaling.trackTransceiver.id !== trackId)) {\n trackSignaling.setTrackTransceiver(null);\n }\n if (trackId) {\n room._getTrackReceiver(trackId).then(function (trackReceiver) { return trackSignaling.setTrackTransceiver(trackReceiver); });\n }\n });\n}\n/**\n * NOTE(mmalavalli): Since A/V sync metrics are not part of the public StatsReport class, we add them\n * only for reporting purposes.\n * @private\n */\nfunction addAVSyncMetricsToLocalTrackStats(trackStats, trackResponse, movingAverageDeltas) {\n var framesEncoded = trackResponse.framesEncoded, packetsSent = trackResponse.packetsSent, totalEncodeTime = trackResponse.totalEncodeTime, totalPacketSendDelay = trackResponse.totalPacketSendDelay;\n var augmentedTrackStats = Object.assign({}, trackStats);\n var key = trackStats.trackSid + \"+\" + trackStats.ssrc;\n var trackMovingAverageDeltas = movingAverageDeltas.get(key) || new Map();\n if (typeof totalEncodeTime === 'number' && typeof framesEncoded === 'number') {\n var trackAvgEncodeDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgEncodeDelay')\n || new MovingAverageDelta();\n trackAvgEncodeDelayMovingAverageDelta.putSample(totalEncodeTime * 1000, framesEncoded);\n augmentedTrackStats.avgEncodeDelay = Math.round(trackAvgEncodeDelayMovingAverageDelta.get());\n trackMovingAverageDeltas.set('avgEncodeDelay', trackAvgEncodeDelayMovingAverageDelta);\n }\n if (typeof totalPacketSendDelay === 'number' && typeof packetsSent === 'number') {\n var trackAvgPacketSendDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgPacketSendDelay')\n || new MovingAverageDelta();\n trackAvgPacketSendDelayMovingAverageDelta.putSample(totalPacketSendDelay * 1000, packetsSent);\n augmentedTrackStats.avgPacketSendDelay = Math.round(trackAvgPacketSendDelayMovingAverageDelta.get());\n trackMovingAverageDeltas.set('avgPacketSendDelay', trackAvgPacketSendDelayMovingAverageDelta);\n }\n movingAverageDeltas.set(key, trackMovingAverageDeltas);\n return augmentedTrackStats;\n}\n/**\n * NOTE(mmalavalli): Since A/V sync metrics are not part of the public StatsReport class, we add them\n * only for reporting purposes.\n * @private\n */\nfunction addAVSyncMetricsToRemoteTrackStats(trackStats, trackResponse, movingAverageDeltas) {\n var estimatedPlayoutTimestamp = trackResponse.estimatedPlayoutTimestamp, framesDecoded = trackResponse.framesDecoded, jitterBufferDelay = trackResponse.jitterBufferDelay, jitterBufferEmittedCount = trackResponse.jitterBufferEmittedCount, totalDecodeTime = trackResponse.totalDecodeTime;\n var augmentedTrackStats = Object.assign({}, trackStats);\n var key = trackStats.trackSid + \"+\" + trackStats.ssrc;\n var trackMovingAverageDeltas = movingAverageDeltas.get(key) || new Map();\n if (typeof estimatedPlayoutTimestamp === 'number') {\n augmentedTrackStats.estimatedPlayoutTimestamp = estimatedPlayoutTimestamp;\n }\n if (typeof framesDecoded === 'number' && typeof totalDecodeTime === 'number') {\n var trackAvgDecodeDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgDecodeDelay')\n || new MovingAverageDelta();\n trackAvgDecodeDelayMovingAverageDelta.putSample(totalDecodeTime * 1000, framesDecoded);\n augmentedTrackStats.avgDecodeDelay = Math.round(trackAvgDecodeDelayMovingAverageDelta.get());\n trackMovingAverageDeltas.set('avgDecodeDelay', trackAvgDecodeDelayMovingAverageDelta);\n }\n if (typeof jitterBufferDelay === 'number' && typeof jitterBufferEmittedCount === 'number') {\n var trackAvgJitterBufferDelayMovingAverageDelta = trackMovingAverageDeltas.get('avgJitterBufferDelay')\n || new MovingAverageDelta();\n trackAvgJitterBufferDelayMovingAverageDelta.putSample(jitterBufferDelay * 1000, jitterBufferEmittedCount);\n augmentedTrackStats.avgJitterBufferDelay = Math.round(trackAvgJitterBufferDelayMovingAverageDelta.get());\n trackMovingAverageDeltas.set('avgJitterBufferDelay', trackAvgJitterBufferDelayMovingAverageDelta);\n }\n movingAverageDeltas.set(key, trackMovingAverageDeltas);\n return augmentedTrackStats;\n}\nfunction replaceNullsWithDefaults(activeIceCandidatePair, peerConnectionId) {\n activeIceCandidatePair = Object.assign({\n availableIncomingBitrate: 0,\n availableOutgoingBitrate: 0,\n bytesReceived: 0,\n bytesSent: 0,\n consentRequestsSent: 0,\n currentRoundTripTime: 0,\n lastPacketReceivedTimestamp: 0,\n lastPacketSentTimestamp: 0,\n nominated: false,\n peerConnectionId: peerConnectionId,\n priority: 0,\n readable: false,\n requestsReceived: 0,\n requestsSent: 0,\n responsesReceived: 0,\n responsesSent: 0,\n retransmissionsReceived: 0,\n retransmissionsSent: 0,\n state: 'failed',\n totalRoundTripTime: 0,\n transportId: '',\n writable: false\n }, filterObject(activeIceCandidatePair || {}, null));\n activeIceCandidatePair.localCandidate = Object.assign({\n candidateType: 'host',\n deleted: false,\n ip: '',\n port: 0,\n priority: 0,\n protocol: 'udp',\n url: ''\n }, filterObject(activeIceCandidatePair.localCandidate || {}, null));\n activeIceCandidatePair.remoteCandidate = Object.assign({\n candidateType: 'host',\n ip: '',\n port: 0,\n priority: 0,\n protocol: 'udp',\n url: ''\n }, filterObject(activeIceCandidatePair.remoteCandidate || {}, null));\n return activeIceCandidatePair;\n}\nmodule.exports = RoomV2;\n//# sourceMappingURL=room.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaSignaling = require('./mediasignaling');\n/**\n * @property {?Track.SID} loudestParticipantSid\n * @emits DominantSpeakerSignaling#updated\n */\nvar DominantSpeakerSignaling = /** @class */ (function (_super) {\n __extends(DominantSpeakerSignaling, _super);\n /**\n * Construct an {@link DominantSpeakerSignaling}.\n */\n function DominantSpeakerSignaling(getReceiver, options) {\n var _this = _super.call(this, getReceiver, 'active_speaker', options) || this;\n Object.defineProperties(_this, {\n _loudestParticipantSid: {\n value: null,\n writable: true\n },\n });\n _this.on('ready', function (transport) {\n transport.on('message', function (message) {\n switch (message.type) {\n case 'active_speaker':\n _this._setLoudestParticipantSid(message.participant);\n break;\n default:\n break;\n }\n });\n });\n return _this;\n }\n Object.defineProperty(DominantSpeakerSignaling.prototype, \"loudestParticipantSid\", {\n /**\n * Get the loudest {@link Track.SID}, if known.\n * @returns {?Track.SID}\n */\n get: function () {\n return this._loudestParticipantSid;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @private\n * @param {Track.SID} loudestParticipantSid\n * @returns {void}\n */\n DominantSpeakerSignaling.prototype._setLoudestParticipantSid = function (loudestParticipantSid) {\n if (this.loudestParticipantSid === loudestParticipantSid) {\n return;\n }\n this._loudestParticipantSid = loudestParticipantSid;\n this.emit('updated');\n };\n return DominantSpeakerSignaling;\n}(MediaSignaling));\n/**\n * @event DominantSpeakerSignaling#updated\n */\nmodule.exports = DominantSpeakerSignaling;\n//# sourceMappingURL=dominantspeakersignaling.js.map","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar EventEmitter = require('events');\nvar PeerConnectionReportFactory = require('../../stats/peerconnectionreportfactory');\n/**\n * @emits NetworkQualityMonitor#updated\n */\nvar NetworkQualityMonitor = /** @class */ (function (_super) {\n __extends(NetworkQualityMonitor, _super);\n /**\n * Construct a {@link NetworkQualityMonitor}.\n * @param {PeerConnectionManager} manager\n * @param {NetworkQualitySignaling} signaling\n */\n function NetworkQualityMonitor(manager, signaling) {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _factories: {\n value: new WeakMap()\n },\n _manager: {\n value: manager\n },\n _signaling: {\n value: signaling\n }\n });\n signaling.on('updated', function () { return _this.emit('updated'); });\n return _this;\n }\n Object.defineProperty(NetworkQualityMonitor.prototype, \"level\", {\n /**\n * Get the current {@link NetworkQualityLevel}, if any.\n * @returns {?NetworkQualityLevel} level - initially null\n */\n get: function () {\n return this._signaling.level;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NetworkQualityMonitor.prototype, \"levels\", {\n /**\n * Get the current {@link NetworkQualityLevels}, if any.\n * @returns {?NetworkQualityLevels} levels - initially null\n */\n get: function () {\n return this._signaling.levels;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NetworkQualityMonitor.prototype, \"remoteLevels\", {\n /**\n * Get the current {@link NetworkQualityLevels} of remote participants, if any.\n * @returns {Map} remoteLevels\n */\n get: function () {\n return this._signaling.remoteLevels;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Start monitoring.\n * @returns {void}\n */\n NetworkQualityMonitor.prototype.start = function () {\n var _this = this;\n this.stop();\n var timeout = setTimeout(function () {\n if (_this._timeout !== timeout) {\n return;\n }\n next(_this).then(function (reports) {\n if (_this._timeout !== timeout) {\n return;\n }\n if (reports.length) {\n var _a = __read(reports, 1), report = _a[0];\n _this._signaling.put(report);\n }\n _this.start();\n });\n }, 200);\n this._timeout = timeout;\n };\n /**\n * Stop monitoring.\n * @returns {void}\n */\n NetworkQualityMonitor.prototype.stop = function () {\n clearTimeout(this._timeout);\n this._timeout = null;\n };\n return NetworkQualityMonitor;\n}(EventEmitter));\n/**\n * @param {NetworkQualityMonitor}\n * @returns {Promise}\n */\nfunction next(monitor) {\n var pcv2s = monitor._manager._peerConnections\n ? Array.from(monitor._manager._peerConnections.values())\n : [];\n var pcs = pcv2s\n .map(function (pcv2) { return pcv2._peerConnection; })\n .filter(function (pc) { return pc.signalingState !== 'closed'; });\n var factories = pcs.map(function (pc) {\n if (monitor._factories.has(pc)) {\n return monitor._factories.get(pc);\n }\n var factory = new PeerConnectionReportFactory(pc);\n monitor._factories.set(pc, factory);\n return factory;\n });\n var reportsOrNullPromises = factories.map(function (factory) { return factory.next().catch(function () { return null; }); });\n return Promise.all(reportsOrNullPromises).then(function (reportsOrNull) { return reportsOrNull\n .filter(function (reportOrNull) { return reportOrNull; })\n .map(function (report) { return report.summarize(); }); });\n}\n/**\n * The {@link NetworkQualityLevel} changed.\n * @event NetworkQualityMonitor#updated\n */\nmodule.exports = NetworkQualityMonitor;\n//# sourceMappingURL=networkqualitymonitor.js.map","'use strict';\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nvar guessBrowser = require('../webrtc/util').guessBrowser;\nvar IceReportFactory = require('./icereportfactory');\nvar PeerConnectionReport = require('./peerconnectionreport');\nvar ReceiverReportFactory = require('./receiverreportfactory');\nvar SenderReportFactory = require('./senderreportfactory');\n/**\n * @typedef {string} TrackId\n */\n/**\n * @typedef {string} StatsId\n */\n/**\n * @interface SenderReportFactoriesByMediaType\n * @property {Map} audio\n * @property {Map} video\n */\n/**\n * @interface ReceiverReportFactoriesByMediaType\n * @property {Map} audio\n * @property {Map} video\n */\n/**\n * @interface SenderAndReceiverReportFactories\n * @property {Map} send\n * @property {Map} recv\n */\n/**\n * @interface {StatsIdsByMediaType}\n * @property {Set} audio\n * @property {Set} video\n */\n/**\n * @property {RTCPeerConnection} pc\n * @property {IceReportFactory} iceReportFactory\n * @property {SenderAndReceiverReportFactories} audio\n * @property {SenderAndReceiverReportFactories} video\n * @property {?PeerConnectionReport} lastReport\n */\nvar PeerConnectionReportFactory = /** @class */ (function () {\n /**\n * Construct a {@link PeerConnectionReportFactory}.\n * @param {RTCPeerConnection} pc\n */\n function PeerConnectionReportFactory(pc) {\n Object.defineProperties(this, {\n pc: {\n enumerable: true,\n value: pc\n },\n ice: {\n enumerable: true,\n value: new IceReportFactory()\n },\n audio: {\n enumerable: true,\n value: {\n send: new Map(),\n recv: new Map()\n }\n },\n video: {\n enumerable: true,\n value: {\n send: new Map(),\n recv: new Map()\n }\n },\n lastReport: {\n enumerable: true,\n value: null,\n writable: true\n }\n });\n }\n /**\n * Create a {@link PeerConnectionReport}.\n * @returns {Promise}\n */\n PeerConnectionReportFactory.prototype.next = function () {\n var _this = this;\n var updatePromise = guessBrowser() === 'firefox'\n ? updateFirefox(this)\n : updateChrome(this);\n return updatePromise.then(function () {\n var audioSenderReportFactories = __spreadArray([], __read(_this.audio.send.values()));\n var videoSenderReportFactories = __spreadArray([], __read(_this.video.send.values()));\n var audioReceiverReportFactories = __spreadArray([], __read(_this.audio.recv.values()));\n var videoReceiverReportFactories = __spreadArray([], __read(_this.video.recv.values()));\n var report = new PeerConnectionReport(_this.ice.lastReport, {\n send: audioSenderReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; }),\n recv: audioReceiverReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; })\n }, {\n send: videoSenderReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; }),\n recv: videoReceiverReportFactories.map(function (factory) { return factory.lastReport; }).filter(function (report) { return report; })\n });\n _this.lastReport = report;\n return report;\n });\n };\n return PeerConnectionReportFactory;\n}());\n/**\n * Construct a Map from MediaStreamTrack Ids to RTCStatsReports.\n * @param {Array|Array} sendersOrReceivers - each\n * RTCRtpSender should have a non-null track\n * @returns {Promise>}\n */\nfunction getSenderOrReceiverReports(sendersOrReceivers) {\n return Promise.all(sendersOrReceivers.map(function (senderOrReceiver) {\n var trackId = senderOrReceiver.track.id;\n return senderOrReceiver.getStats().then(function (report) {\n var e_1, _a;\n try {\n // NOTE(mroberts): We have to rewrite Ids due to this bug:\n //\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1463430\n //\n for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var stats = _c.value;\n if (stats.type === 'inbound-rtp') {\n stats.id = trackId + \"-\" + stats.id;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return [trackId, report];\n });\n })).then(function (pairs) { return new Map(pairs); });\n}\n/**\n * @param {SenderReportFactory.constructor} SenderReportFactory\n * @param {SenderReportFactoriesByMediaType} sendersByMediaType\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?SenderReportFactory}\n */ /**\n* @param {ReceiverReportFactory.constructor} ReceiverReportFactory\n* @param {ReceiverReportFactoriesByMediaType} receiversByMediaType\n* @param {RTCStatsReport} report\n* @param {RTCStats} stats\n* @param {TrackId} [trackId]\n* @returns {?ReceiverReportFactory}\n*/\nfunction getOrCreateSenderOrReceiverReportFactory(SenderOrReceiverReportFactory, sendersOrReceiversByMediaType, report, stats, trackId) {\n var sendersOrReceivers = sendersOrReceiversByMediaType[stats.mediaType];\n if (!trackId) {\n var trackStats = report.get(stats.trackId);\n if (trackStats) {\n trackId = trackStats.trackIdentifier;\n }\n }\n if (sendersOrReceivers && trackId) {\n if (sendersOrReceivers.has(stats.id)) {\n return sendersOrReceivers.get(stats.id);\n }\n var senderOrReceiverFactory = new SenderOrReceiverReportFactory(trackId, stats);\n sendersOrReceivers.set(stats.id, senderOrReceiverFactory);\n }\n return null;\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {SenderReportFactoriesByMediaType}\n */\nfunction getSenderReportFactoriesByMediaType(factory) {\n return { audio: factory.audio.send, video: factory.video.send };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {ReceiverReportFactoriesByMediaType}\n */\nfunction getReceiverReportFactoriesByMediaType(factory) {\n return { audio: factory.audio.recv, video: factory.video.recv };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?SenderReportFactory}\n */\nfunction getOrCreateSenderReportFactory(factory, report, stats, trackId) {\n return getOrCreateSenderOrReceiverReportFactory(SenderReportFactory, getSenderReportFactoriesByMediaType(factory), report, stats, trackId);\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {RTCStats} stats\n * @param {TrackId} [trackId]\n * @returns {?ReceiverReportFactory}\n */\nfunction getOrCreateReceiverReportFactory(factory, report, stats, trackId) {\n return getOrCreateSenderOrReceiverReportFactory(ReceiverReportFactory, getReceiverReportFactoriesByMediaType(factory), report, stats, trackId);\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @retuns {StatsIdsByMediaType}\n */\nfunction getSenderReportFactoryIdsByMediaType(factory) {\n return {\n audio: new Set(factory.audio.send.keys()),\n video: new Set(factory.video.send.keys())\n };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @retuns {StatsIdsByMediaType}\n */\nfunction getReceiverReportFactoryIdsByMediaType(factory) {\n return {\n audio: new Set(factory.audio.recv.keys()),\n video: new Set(factory.video.recv.keys())\n };\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {StatsIdsByMediaType} senderReportFactoryIdsToDeleteByMediaType\n * @param {TrackId} [trackId]\n * @returns {void}\n */\nfunction updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType, trackId) {\n var e_2, _a;\n try {\n for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var stats = _c.value;\n if (stats.type === 'outbound-rtp' && !stats.isRemote) {\n if (guessBrowser() !== 'firefox' && !stats.trackId) {\n continue;\n }\n var senderReportFactoryIdsToDelete = senderReportFactoryIdsToDeleteByMediaType[stats.mediaType];\n if (senderReportFactoryIdsToDelete) {\n senderReportFactoryIdsToDelete.delete(stats.id);\n }\n var senderReportFactory = getOrCreateSenderReportFactory(factory, report, stats, trackId);\n if (senderReportFactory) {\n var remoteInboundStats = report.get(stats.remoteId);\n senderReportFactory.next(trackId || senderReportFactory.trackId, stats, remoteInboundStats);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_2) throw e_2.error; }\n }\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @param {RTCStatsReport} report\n * @param {StatsIdsByMediaType} receiverReportFactoryIdsToDeleteByMediaType\n * @param {TrackId} [trackId]\n * @returns {void}\n */\nfunction updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType, trackId) {\n var e_3, _a;\n try {\n for (var _b = __values(report.values()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var stats = _c.value;\n if (stats.type === 'inbound-rtp' && !stats.isRemote) {\n var receiverReportFactoryIdsToDelete = receiverReportFactoryIdsToDeleteByMediaType[stats.mediaType];\n if (receiverReportFactoryIdsToDelete) {\n receiverReportFactoryIdsToDelete.delete(stats.id);\n }\n var receiverReportFactory = getOrCreateReceiverReportFactory(factory, report, stats, trackId);\n if (receiverReportFactory) {\n receiverReportFactory.next(trackId || receiverReportFactory.trackId, stats);\n }\n }\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_3) throw e_3.error; }\n }\n}\n/**\n * @param {SenderReportFactoriesByMediaType|ReceiverReportFactoriesByMediaType} senderOrReceiverReportFactoriesByMediaType\n * @param {StatsIdsByMediaType} senderOrReceiverReportFactoryIdsByMediaType\n * @returns {void}\n */\nfunction deleteSenderOrReceiverReportFactories(senderOrReceiverReportFactoriesByMediaType, senderOrReceiverReportFactoryIdsByMediaType) {\n var _loop_1 = function (mediaType) {\n var senderOrReceiverReportFactories = senderOrReceiverReportFactoriesByMediaType[mediaType];\n var senderOrReceiverReportFactoryIds = senderOrReceiverReportFactoryIdsByMediaType[mediaType];\n senderOrReceiverReportFactoryIds.forEach(function (senderOrReceiverReportFactoryId) { return senderOrReceiverReportFactories.delete(senderOrReceiverReportFactoryId); });\n };\n for (var mediaType in senderOrReceiverReportFactoryIdsByMediaType) {\n _loop_1(mediaType);\n }\n}\n/**\n * @param {IceReportFactory} ice\n * @param {RTCStatsReport} report\n * @returns {void}\n */\nfunction updateIceReport(ice, report) {\n var e_4, _a, e_5, _b;\n var selectedCandidatePair;\n try {\n for (var _c = __values(report.values()), _d = _c.next(); !_d.done; _d = _c.next()) {\n var stats = _d.value;\n if (stats.type === 'transport') {\n selectedCandidatePair = report.get(stats.selectedCandidatePairId);\n }\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n }\n finally { if (e_4) throw e_4.error; }\n }\n if (selectedCandidatePair) {\n ice.next(selectedCandidatePair);\n return;\n }\n try {\n for (var _e = __values(report.values()), _f = _e.next(); !_f.done; _f = _e.next()) {\n var stats = _f.value;\n if (stats.type === 'candidate-pair'\n && stats.nominated\n && ('selected' in stats ? stats.selected : true)) {\n ice.next(stats);\n }\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n }\n finally { if (e_5) throw e_5.error; }\n }\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {Promise}\n */\nfunction updateFirefox(factory) {\n var senders = factory.pc.getTransceivers()\n .filter(function (transceiver) { return transceiver.currentDirection && transceiver.currentDirection.match(/send/) && transceiver.sender.track; })\n .map(function (transceiver) { return transceiver.sender; });\n var receivers = factory.pc.getTransceivers()\n .filter(function (transceiver) { return transceiver.currentDirection && transceiver.currentDirection.match(/recv/); })\n .map(function (transceiver) { return transceiver.receiver; });\n return Promise.all([\n getSenderOrReceiverReports(senders),\n getSenderOrReceiverReports(receivers),\n factory.pc.getStats()\n ]).then(function (_a) {\n var _b = __read(_a, 3), senderReports = _b[0], receiverReports = _b[1], pcReport = _b[2];\n var senderReportFactoriesByMediaType = getSenderReportFactoriesByMediaType(factory);\n var senderReportFactoryIdsToDeleteByMediaType = getSenderReportFactoryIdsByMediaType(factory);\n senderReports.forEach(function (report, trackId) { return updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType, trackId); });\n deleteSenderOrReceiverReportFactories(senderReportFactoriesByMediaType, senderReportFactoryIdsToDeleteByMediaType);\n var receiverReportFactoriesByMediaType = getReceiverReportFactoriesByMediaType(factory);\n var receiverReportFactoryIdsToDeleteByMediaType = getReceiverReportFactoryIdsByMediaType(factory);\n receiverReports.forEach(function (report, trackId) { return updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType, trackId); });\n deleteSenderOrReceiverReportFactories(receiverReportFactoriesByMediaType, receiverReportFactoryIdsToDeleteByMediaType);\n updateIceReport(factory.ice, pcReport);\n });\n}\n/**\n * @param {PeerConnectionReportFactory} factory\n * @returns {Promise}\n */\nfunction updateChrome(factory) {\n return factory.pc.getStats().then(function (report) {\n var senderReportFactoriesByMediaType = getSenderReportFactoriesByMediaType(factory);\n var senderReportFactoryIdsToDeleteByMediaType = getSenderReportFactoryIdsByMediaType(factory);\n updateSenderReports(factory, report, senderReportFactoryIdsToDeleteByMediaType);\n deleteSenderOrReceiverReportFactories(senderReportFactoriesByMediaType, senderReportFactoryIdsToDeleteByMediaType);\n var receiverReportFactoriesByMediaType = getReceiverReportFactoriesByMediaType(factory);\n var receiverReportFactoryIdsToDeleteByMediaType = getReceiverReportFactoryIdsByMediaType(factory);\n updateReceiverReports(factory, report, receiverReportFactoryIdsToDeleteByMediaType);\n deleteSenderOrReceiverReportFactories(receiverReportFactoriesByMediaType, receiverReportFactoryIdsToDeleteByMediaType);\n updateIceReport(factory.ice, report);\n });\n}\nmodule.exports = PeerConnectionReportFactory;\n//# sourceMappingURL=peerconnectionreportfactory.js.map","'use strict';\nvar IceReport = require('./icereport');\n/**\n * @property {IceReport} lastReport\n * @property {?RTCStats} lastStats\n */\nvar IceReportFactory = /** @class */ (function () {\n /**\n * Construct an {@link IceReportFactory}.\n */\n function IceReportFactory() {\n Object.defineProperties(this, {\n lastReport: {\n enumerable: true,\n value: new IceReport(0, 0),\n writable: true\n },\n lastStats: {\n enumerable: true,\n value: null,\n writable: true\n }\n });\n }\n /**\n * Create an {@link IceReport}.\n * @param {RTCStats} newerStats;\n * @returns {IceReport}\n */\n IceReportFactory.prototype.next = function (newerStats) {\n var olderStats = this.lastStats;\n this.lastStats = newerStats;\n if (olderStats) {\n var report = olderStats.id === newerStats.id\n ? IceReport.of(olderStats, newerStats)\n : new IceReport(0, 0);\n this.lastReport = report;\n }\n return this.lastReport;\n };\n return IceReportFactory;\n}());\nmodule.exports = IceReportFactory;\n//# sourceMappingURL=icereportfactory.js.map","'use strict';\n/**\n * @property {number} [availableSend] - bps (undefined in Firefox)\n * @property {number} recv - bps\n * @property {number} [rtt] - s (undefined in Firefox)\n * @property {number} send - bps\n */\nvar IceReport = /** @class */ (function () {\n /**\n * Construct an {@link IceReport}.\n * @param {number} send - bps\n * @param {number} recv - bps\n * @param {number} [rtt] - s\n * @param {number} [availableSend] - bps\n */\n function IceReport(send, recv, availableSend, rtt) {\n Object.defineProperties(this, {\n availableSend: {\n enumerable: true,\n value: availableSend\n },\n recv: {\n enumerable: true,\n value: recv\n },\n rtt: {\n enumerable: true,\n value: rtt\n },\n send: {\n enumerable: true,\n value: send\n }\n });\n }\n /**\n * @param {RTCStats} olderStats\n * @param {RTCStats} newerStats\n * @returns {IceReport}\n */\n IceReport.of = function (olderStats, newerStats) {\n var secondsElapsed = (newerStats.timestamp - olderStats.timestamp) / 1000;\n var deltaBytesSent = newerStats.bytesSent - olderStats.bytesSent;\n var deltaBytesReceived = newerStats.bytesReceived - olderStats.bytesReceived;\n var send = secondsElapsed > 0\n ? (deltaBytesSent / secondsElapsed) * 8\n : 0;\n var recv = secondsElapsed > 0\n ? (deltaBytesReceived / secondsElapsed) * 8\n : 0;\n var availableSend = newerStats.availableOutgoingBitrate, rtt = newerStats.currentRoundTripTime;\n return new IceReport(send, recv, availableSend, rtt);\n };\n return IceReport;\n}());\nmodule.exports = IceReport;\n//# sourceMappingURL=icereport.js.map","'use strict';\nvar ReceiverReport = require('./receiverreport');\nvar SenderReport = require('./senderreport');\n/**\n * @interface SenderAndReceiverReports\n * @property {Array} send\n * @property {Array} recv\n */\n/**\n * @interface SenderAndReceiverSummary\n * @property {SenderSummary} send\n * @property {ReceiverSummary} recv\n */\n/**\n * @interface PeerConnectionSummary\n * @property {IceReport} ice\n * @property {SenderSummary} send\n * @property {ReceiverSummary} recv\n * @property {SenderAndReceiverSummary} audio\n * @property {SenderAndReceiverSummary} video\n */\n/**\n * @property {IceReport} ice\n * @roperty {SenderAndReceiverReports} audio\n * @roperty {SenderAndReceiverReports} video\n */\nvar PeerConnectionReport = /** @class */ (function () {\n /**\n * Construct a {@link PeerConnectionReport}.\n * @param {IceReport} ice\n * @param {SenderAndReceiverReports} audio\n * @param {SenderAndReceiverReports} video\n */\n function PeerConnectionReport(ice, audio, video) {\n Object.defineProperties(this, {\n ice: {\n enumerable: true,\n value: ice\n },\n audio: {\n enumerable: true,\n value: audio\n },\n video: {\n enumerable: true,\n value: video\n }\n });\n }\n /**\n * Summarize the {@link PeerConnectionReport} by summarizing its\n * {@link SenderReport}s and {@link ReceiverReport}s.\n * @returns {PeerConnectionSummary}\n */\n PeerConnectionReport.prototype.summarize = function () {\n var senderReports = this.audio.send.concat(this.video.send);\n var send = SenderReport.summarize(senderReports);\n var receiverReports = this.audio.recv.concat(this.video.recv);\n var recv = ReceiverReport.summarize(receiverReports);\n return {\n ice: this.ice,\n send: send,\n recv: recv,\n audio: {\n send: SenderReport.summarize(this.audio.send),\n recv: ReceiverReport.summarize(this.audio.recv)\n },\n video: {\n send: SenderReport.summarize(this.video.send),\n recv: ReceiverReport.summarize(this.video.recv)\n }\n };\n };\n return PeerConnectionReport;\n}());\nmodule.exports = PeerConnectionReport;\n//# sourceMappingURL=peerconnectionreport.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ReceiverReport = require('./receiverreport');\nvar SenderOrReceiverReportFactory = require('./senderorreceiverreportfactory');\n/**\n * @extends SenderOrReceiverReportFactory\n * @param {?ReceiverReport} lastReport\n */\nvar ReceiverReportFactory = /** @class */ (function (_super) {\n __extends(ReceiverReportFactory, _super);\n /**\n * Construct a {@link ReceiverReportFactory}.\n * @param {TrackId} trackId\n * @param {RTCStats} initialStats\n */\n function ReceiverReportFactory(trackId, initialStats) {\n var _this = _super.call(this, initialStats.id, trackId, initialStats) || this;\n Object.defineProperties(_this, {\n lastReport: {\n enumerable: true,\n value: null,\n writable: true\n }\n });\n return _this;\n }\n /**\n * Create a {@link ReceiverReport}.\n * @param {TrackId} trackId\n * @param {RTCStats} newerStats\n * @returns {ReceiverReport}\n */\n ReceiverReportFactory.prototype.next = function (trackId, newerStats) {\n var olderStats = this.lastStats;\n this.lastStats = newerStats;\n this.trackId = trackId;\n var report = ReceiverReport.of(trackId, olderStats, newerStats);\n this.lastReport = report;\n return report;\n };\n return ReceiverReportFactory;\n}(SenderOrReceiverReportFactory));\nmodule.exports = ReceiverReportFactory;\n//# sourceMappingURL=receiverreportfactory.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar SenderOrReceiverReportFactory = require('./senderorreceiverreportfactory');\nvar SenderReport = require('./senderreport');\n/**\n * @extends {SenderOrReceiverReportFactory}\n * @property {?SenderReport} lastReport\n */\nvar SenderReportFactory = /** @class */ (function (_super) {\n __extends(SenderReportFactory, _super);\n /**\n * Construct a {@link SenderReportFactory}.\n * @param {TrackId} trackId\n * @param {RTCStats} initialStats\n */\n function SenderReportFactory(trackId, initialStats) {\n var _this = _super.call(this, initialStats.id, trackId, initialStats) || this;\n Object.defineProperties(_this, {\n lastReport: {\n enumerable: true,\n value: null,\n writable: true\n }\n });\n return _this;\n }\n /**\n * @param {TrackId} trackId\n * @param {RTCStats} newerStats\n * @param {RTCRemoteInboundRtpStreamStats} [newerRemoteStats]\n * @returns {SenderReport}\n */\n SenderReportFactory.prototype.next = function (trackId, newerStats, newerRemoteStats) {\n var olderStats = this.lastStats;\n this.lastStats = newerStats;\n this.trackId = trackId;\n var report = SenderReport.of(trackId, olderStats, newerStats, newerRemoteStats);\n this.lastReport = report;\n return report;\n };\n return SenderReportFactory;\n}(SenderOrReceiverReportFactory));\nmodule.exports = SenderReportFactory;\n//# sourceMappingURL=senderreportfactory.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar AsyncVar = require('../../util/asyncvar');\nvar Timeout = require('../../util/timeout');\nvar NETWORK_QUALITY_RESPONSE_TIME_MS = 5000;\n/**\n * @interface MediaSignalingTransport\n * @property {function(object): boolean} send\n * @emits MediaSignalingTransport#message\n */\n/**\n * The {@link MediaSignalingTransport} received a message.\n * @event MediaSignalingTransport#message\n * @param {object} message\n */\n/**\n * @interface LatencyStats\n * @property {number} jitter\n * @property {number} rtt\n * @property {number} level\n */\n/**\n * @interface FractionLostStats\n * @property {number} fractionLost\n * @property {number} level\n */\n/**\n * @interface BandwidthStats\n * @property {number} actual\n * @property {number} available\n * @property {number} level\n */\n/**\n * @interface SendOrRecvStats\n * @property {BandwidthStats} bandwidth\n * @property {FractionLostStats} fractionLost\n * @property {LatencyStats} latency\n */\n/**\n * @interface MediaLevels\n * @property {number} send\n * @property {SendOrRecvStats} sendStats\n * @property {number} recv\n * @property {SendOrRecvStats} recvStats\n */\n/**\n * @interface NetworkQualityLevels\n * @property {number} level\n * @property {MediaLevels} audio\n * @property {MediaLevels} video\n */\n/**\n * @typedef {PeerConnectionSummary} NetworkQualityInputs\n */\n/**\n * @classdesc The {@link NetworkQualitySignaling} class allows submitting\n * {@link NetworkQualityInputs} for computing {@link NetworkQualityLevel}. It\n * does so by sending and receiving messages over a\n * {@link MediaSignalingTransport}. The exact transport used depends on the\n * topology of the {@link Room} that {@link NetworkQualitySignaling} is being\n * used within: for P2P Rooms, we re-use the {@link TransportV2}; and for\n * Group Rooms, we use a {@link DataTransport}.\n * @emits NetworkQualitySignaling#updated\n */\nvar NetworkQualitySignaling = /** @class */ (function (_super) {\n __extends(NetworkQualitySignaling, _super);\n /**\n * Construct a {@link NetworkQualitySignaling}.\n * @param {Promise} getReceiver\n * @param {NetworkQualityConfigurationImpl} networkQualityConfiguration\n */\n function NetworkQualitySignaling(getReceiver, networkQualityConfiguration, options) {\n var _this = _super.call(this, getReceiver, 'network_quality', options) || this;\n Object.defineProperties(_this, {\n _level: {\n value: null,\n writable: true\n },\n _levels: {\n value: null,\n writable: true\n },\n _remoteLevels: {\n value: new Map(),\n writable: true\n },\n _networkQualityInputs: {\n value: new AsyncVar()\n },\n _resendTimer: {\n value: new Timeout(function () {\n // and schedule next timer at x1.5 the delay..\n _this._resendTimer.setDelay(_this._resendTimer.delay * 1.5);\n _this._sendNetworkQualityInputs();\n }, NETWORK_QUALITY_RESPONSE_TIME_MS, false),\n },\n _networkQualityReportLevels: {\n get: function () {\n return {\n reportLevel: networkQualityConfiguration.local,\n remoteReportLevel: networkQualityConfiguration.remote\n };\n }\n }\n });\n _this.on('ready', function (transport) {\n transport.on('message', function (message) {\n _this._log.debug('Incoming: ', message);\n switch (message.type) {\n case 'network_quality':\n _this._handleNetworkQualityMessage(message);\n break;\n default:\n break;\n }\n });\n });\n _this._sendNetworkQualityInputs();\n return _this;\n }\n Object.defineProperty(NetworkQualitySignaling.prototype, \"level\", {\n /**\n * Get the current {@link NetworkQualityLevel}, if any.\n * @returns {?NetworkQualityLevel} level - initially null\n */\n get: function () {\n return this._level;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NetworkQualitySignaling.prototype, \"levels\", {\n /**\n * Get the current {@link NetworkQualityLevels}, if any.\n * @returns {?NetworkQualityLevels} levels - initially null\n */\n get: function () {\n return this._levels;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NetworkQualitySignaling.prototype, \"remoteLevels\", {\n /**\n * Get the current {@link NetworkQualityLevels} of remote participants, if any.\n * @returns {Map} remoteLevels\n */\n get: function () {\n return this._remoteLevels;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Check to see if the {@link NetworkQualityLevel} is new, and raise an\n * event if necessary.\n * @private\n * @param {object} message\n * @returns {void}\n */\n NetworkQualitySignaling.prototype._handleNetworkQualityMessage = function (message) {\n var _this = this;\n var updated = false;\n var level = null;\n var local = message ? message.local : null;\n if (typeof local === 'number') {\n // NOTE(mroberts): In prod, we plan to only send the level.\n level = local;\n this._levels = null;\n }\n else if (typeof local === 'object' && local) {\n // NOTE(mroberts): In dev, we plan to send the decomposed levels. An early\n // VMS version does not compute `level` for us, so we fallback to taking\n // the minimum ourselves.\n this._levels = local;\n level = typeof local.level === 'number'\n ? local.level\n : Math.min(local.audio.send, local.audio.recv, local.video.send, local.video.recv);\n }\n if (level !== null && this.level !== level) {\n this._level = level;\n updated = true;\n }\n this._remoteLevels = message && message.remotes\n ? message.remotes.reduce(function (levels, obj) {\n var oldObj = _this._remoteLevels.get(obj.sid) || {};\n if (oldObj.level !== obj.level) {\n updated = true;\n }\n return levels.set(obj.sid, obj);\n }, new Map())\n : this._remoteLevels;\n if (updated) {\n this.emit('updated');\n }\n // score is received. so reset the timer to default timeout.\n this._resendTimer.setDelay(NETWORK_QUALITY_RESPONSE_TIME_MS);\n // timer is cleared only while we are sending inputs.\n // if we are already sending inputs do not send them again.\n if (this._resendTimer.isSet) {\n setTimeout(function () { return _this._sendNetworkQualityInputs(); }, 1000);\n }\n };\n /**\n * Start sending {@link NetworkQualityInputs}.\n * @private\n * @returns {Promise}\n */\n NetworkQualitySignaling.prototype._sendNetworkQualityInputs = function () {\n var _this = this;\n this._resendTimer.clear();\n return this._networkQualityInputs.take().then(function (networkQualityInputs) {\n if (_this._transport) {\n _this._transport.publish(createNetworkQualityInputsMessage(networkQualityInputs, _this._networkQualityReportLevels));\n }\n }).finally(function () {\n _this._resendTimer.start();\n });\n };\n /**\n * Put {@link NetworkQualityInputs} to be used for computing\n * {@link NetworkQualityLevel}.\n * @param {NetworkQualityInputs} networkQualityInputs\n * @returns {void}\n */\n NetworkQualitySignaling.prototype.put = function (networkQualityInputs) {\n this._networkQualityInputs.put(networkQualityInputs);\n };\n return NetworkQualitySignaling;\n}(MediaSignaling));\n/**\n * The {@link NetworkQualityLevel} changed.\n * @event NetworkQualitySignaling#updated\n */\n/**\n * @typedef {object} NetworkQualityReportLevels\n * @param {number} reportLevel\n * @param {number} remoteReportLevel\n */\n/**\n * @param {NetworkQualityInputs} networkQualityInputs\n * @param {NetworkQualityReportLevels} networkQualityReportLevels\n * @returns {object} message\n */\nfunction createNetworkQualityInputsMessage(networkQualityInputs, networkQualityReportLevels) {\n return Object.assign({ type: 'network_quality' }, networkQualityInputs, networkQualityReportLevels);\n}\nmodule.exports = NetworkQualitySignaling;\n//# sourceMappingURL=networkqualitysignaling.js.map","'use strict';\nvar defer = require('./').defer;\n/**\n * An {@link AsyncVar} is an \"asynchronous variable\" which may or may not\n * contain a value of some type T. You can put a value into the {@link AsyncVar}\n * with {@link AsyncVar#put}. Callers can take a value out of the\n * {@link AsyncVar} by queueing up with {@link AsyncVar#take}. N calls to\n * {@link AsyncVar#take} require N calls to {@link AsyncVar#put} to resolve, and\n * they resolve in order.\n */\nvar AsyncVar = /** @class */ (function () {\n /**\n * Construct an {@link AsyncVar}.\n */\n function AsyncVar() {\n Object.defineProperties(this, {\n _deferreds: {\n value: []\n },\n _hasValue: {\n value: false,\n writable: true\n },\n _value: {\n value: null,\n writable: true\n }\n });\n }\n /**\n * Put a value into the {@link AsyncVar}.\n * @param {T} value\n * @returns {this}\n */\n AsyncVar.prototype.put = function (value) {\n this._hasValue = true;\n this._value = value;\n var deferred = this._deferreds.shift();\n if (deferred) {\n deferred.resolve(value);\n }\n return this;\n };\n /**\n * Take the value out of the {@link AsyncVar}.\n * @returns {Promise}\n */\n AsyncVar.prototype.take = function () {\n var _this = this;\n if (this._hasValue && !this._deferreds.length) {\n this._hasValue = false;\n return Promise.resolve(this._value);\n }\n var deferred = defer();\n this._deferreds.push(deferred);\n return deferred.promise.then(function (value) {\n _this._hasValue = false;\n return value;\n });\n };\n return AsyncVar;\n}());\nmodule.exports = AsyncVar;\n//# sourceMappingURL=asyncvar.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RecordingSignaling = require('../recording');\n/**\n * @extends RecordingSignaling\n */\nvar RecordingV2 = /** @class */ (function (_super) {\n __extends(RecordingV2, _super);\n /**\n * Construct a {@link RecordingV2}.\n */\n function RecordingV2() {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _revision: {\n value: 1,\n writable: true\n }\n });\n return _this;\n }\n /**\n * Compare the {@link RecordingV2} to a {@link RecordingV2#Representation}\n * of itself and perform any updates necessary.\n * @param {RecordingV2#Representation} recording\n * @returns {this}\n * @fires RecordingSignaling#updated\n */\n RecordingV2.prototype.update = function (recording) {\n if (recording.revision < this._revision) {\n return this;\n }\n this._revision = recording.revision;\n return this.enable(recording.is_recording);\n };\n return RecordingV2;\n}(RecordingSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link RecordingV2}\n * @typedef {object} RecordingV2#Representation\n * @property {boolean} enabled\n * @property {number} revision\n */\nmodule.exports = RecordingV2;\n//# sourceMappingURL=recording.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RemoteParticipantSignaling = require('../remoteparticipant');\nvar RemoteTrackPublicationV2 = require('./remotetrackpublication');\n/**\n * @extends RemoteParticipantSignaling\n * @property {?number} revision\n */\nvar RemoteParticipantV2 = /** @class */ (function (_super) {\n __extends(RemoteParticipantV2, _super);\n /**\n * Construct a {@link RemoteParticipantV2}.\n * @param {object} participantState\n * @param {function(Track.SID): boolean} getInitialTrackSwitchOffState\n * @param {function(Track.SID, Track.Priority): boolean} setPriority\n * @param {function(Track.SID, ClientRenderHint): Promise} setRenderHint\n * @param {function(Track.SID): void} clearTrackHint\n * @param {object} [options]\n */\n function RemoteParticipantV2(participantState, getInitialTrackSwitchOffState, setPriority, setRenderHint, clearTrackHint, options) {\n var _this = _super.call(this, participantState.sid, participantState.identity) || this;\n options = Object.assign({\n RemoteTrackPublicationV2: RemoteTrackPublicationV2\n }, options);\n Object.defineProperties(_this, {\n _revision: {\n writable: true,\n value: null\n },\n _RemoteTrackPublicationV2: {\n value: options.RemoteTrackPublicationV2\n },\n _getInitialTrackSwitchOffState: {\n value: getInitialTrackSwitchOffState\n },\n updateSubscriberTrackPriority: {\n value: function (trackSid, priority) { return setPriority(trackSid, priority); }\n },\n updateTrackRenderHint: {\n value: function (trackSid, renderHint) { return setRenderHint(trackSid, renderHint); }\n },\n clearTrackHint: {\n value: function (trackSid) { return clearTrackHint(trackSid); }\n },\n revision: {\n enumerable: true,\n get: function () {\n return this._revision;\n }\n }\n });\n return _this.update(participantState);\n }\n /**\n * @private\n */\n RemoteParticipantV2.prototype._getOrCreateTrack = function (trackState) {\n var RemoteTrackPublicationV2 = this._RemoteTrackPublicationV2;\n var track = this.tracks.get(trackState.sid);\n if (!track) {\n var isSwitchedOff = this._getInitialTrackSwitchOffState(trackState.sid);\n track = new RemoteTrackPublicationV2(trackState, isSwitchedOff);\n this.addTrack(track);\n }\n return track;\n };\n /**\n * Update the {@link RemoteParticipantV2} with the new state.\n * @param {object} participantState\n * @returns {this}\n */\n RemoteParticipantV2.prototype.update = function (participantState) {\n var _this = this;\n if (this.revision !== null && participantState.revision <= this.revision) {\n return this;\n }\n this._revision = participantState.revision;\n var tracksToKeep = new Set();\n participantState.tracks.forEach(function (trackState) {\n var track = _this._getOrCreateTrack(trackState);\n track.update(trackState);\n tracksToKeep.add(track);\n });\n this.tracks.forEach(function (track) {\n if (!tracksToKeep.has(track)) {\n _this.removeTrack(track);\n }\n });\n switch (participantState.state) {\n case 'disconnected':\n this.disconnect();\n break;\n case 'reconnecting':\n this.reconnecting();\n break;\n case 'connected':\n this.connect(this.sid, this.identity);\n break;\n }\n return this;\n };\n return RemoteParticipantV2;\n}(RemoteParticipantSignaling));\nmodule.exports = RemoteParticipantV2;\n//# sourceMappingURL=remoteparticipant.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ParticipantSignaling = require('./participant');\n/**\n * A {@link Participant} implementation\n * @extends ParticipantSignaling\n * @property {string} identity\n * @property {Participant.SID} sid\n */\nvar RemoteParticipantSignaling = /** @class */ (function (_super) {\n __extends(RemoteParticipantSignaling, _super);\n /**\n * Construct a {@link RemoteParticipantSignaling}.\n * @param {Participant.SID} sid\n * @param {string} identity\n */\n function RemoteParticipantSignaling(sid, identity) {\n var _this = _super.call(this) || this;\n _this.connect(sid, identity);\n return _this;\n }\n return RemoteParticipantSignaling;\n}(ParticipantSignaling));\nmodule.exports = RemoteParticipantSignaling;\n//# sourceMappingURL=remoteparticipant.js.map","'use strict';\nvar NetworkQualityAudioStats = require('./networkqualityaudiostats');\nvar NetworkQualityVideoStats = require('./networkqualityvideostats');\n/**\n * Network quality statistics for a {@link Participant}.\n * @property {NetworkQualityLevel} level - {@link NetworkQualityLevel} of the {@link Participant}\n * @property {?NetworkQualityAudioStats} audio - {@link NetworkQualityMediaStats}\n * for audio; null if {@link NetworkQualityVerbosity} is {@link NetworkQualityVerbosity}#minimal\n * or below\n * @property {?NetworkQualityVideoStats} video - {@link NetworkQualityMediaStats}\n * for video; null if {@link NetworkQualityVerbosity} is {@link NetworkQualityVerbosity}#minimal\n * or below\n */\nvar NetworkQualityStats = /** @class */ (function () {\n /**\n * Construct a {@link NetworkQualityStats}.\n * @param {NetworkQualityLevels} networkQualityLevels\n */\n function NetworkQualityStats(_a) {\n var level = _a.level, audio = _a.audio, video = _a.video;\n Object.defineProperties(this, {\n level: {\n value: level,\n enumerable: true\n },\n audio: {\n value: audio ? new NetworkQualityAudioStats(audio) : null,\n enumerable: true\n },\n video: {\n value: video ? new NetworkQualityVideoStats(video) : null,\n enumerable: true\n }\n });\n }\n return NetworkQualityStats;\n}());\nmodule.exports = NetworkQualityStats;\n//# sourceMappingURL=networkqualitystats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NetworkQualityMediaStats = require('./networkqualitymediastats');\n/**\n * {@link NetworkQualityMediaStats} for a {@link Participant}'s audio.\n */\nvar NetworkQualityAudioStats = /** @class */ (function (_super) {\n __extends(NetworkQualityAudioStats, _super);\n /**\n * Construct a {@link NetworkQualityAudioStats}.\n * @param {MediaLevels} mediaLevels\n */\n function NetworkQualityAudioStats(mediaLevels) {\n return _super.call(this, mediaLevels) || this;\n }\n return NetworkQualityAudioStats;\n}(NetworkQualityMediaStats));\nmodule.exports = NetworkQualityAudioStats;\n//# sourceMappingURL=networkqualityaudiostats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NetworkQualitySendOrRecvStats = require('./networkqualitysendorrecvstats');\n/**\n * {@link NetworkQualitySendOrRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}#send is calculated.\n */\nvar NetworkQualitySendStats = /** @class */ (function (_super) {\n __extends(NetworkQualitySendStats, _super);\n /**\n * Construct a {@link NetworkQualitySendStats}.\n * @param {SendOrRecvStats} sendOrRecvStats\n */\n function NetworkQualitySendStats(sendOrRecvStats) {\n return _super.call(this, sendOrRecvStats) || this;\n }\n return NetworkQualitySendStats;\n}(NetworkQualitySendOrRecvStats));\nmodule.exports = NetworkQualitySendStats;\n//# sourceMappingURL=networkqualitysendstats.js.map","'use strict';\n/**\n * Bandwidth network quality statistics.\n * @property {?number} actual - the actual bandwidth used, in bits per second\n * @property {?number} available - an estimate of available useable bandwidth, in bits per second\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for bandwidth\n */\nvar NetworkQualityBandwidthStats = /** @class */ (function () {\n /**\n * Construct a {@link NetworkQualityBandwidthStats}.\n * @param {BandwidthStats} bandwidthStats\n */\n function NetworkQualityBandwidthStats(_a) {\n var _b = _a.actual, actual = _b === void 0 ? null : _b, _c = _a.available, available = _c === void 0 ? null : _c, _d = _a.level, level = _d === void 0 ? null : _d;\n Object.defineProperties(this, {\n actual: {\n value: actual,\n enumerable: true\n },\n available: {\n value: available,\n enumerable: true\n },\n level: {\n value: level,\n enumerable: true\n }\n });\n }\n return NetworkQualityBandwidthStats;\n}());\nmodule.exports = NetworkQualityBandwidthStats;\n//# sourceMappingURL=networkqualitybandwidthstats.js.map","'use strict';\n/**\n * Fraction lost network quality statistics.\n * @property {?number} fractionLost - packets lost\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for fraction lost\n */\nvar NetworkQualityFractionLostStats = /** @class */ (function () {\n /**\n * Construct a {@link NetworkQualityFractionLostStats}.\n * @param {FractionLostStats} fractionLostStats\n */\n function NetworkQualityFractionLostStats(_a) {\n var _b = _a.fractionLost, fractionLost = _b === void 0 ? null : _b, _c = _a.level, level = _c === void 0 ? null : _c;\n Object.defineProperties(this, {\n fractionLost: {\n value: fractionLost,\n enumerable: true\n },\n level: {\n value: level,\n enumerable: true\n }\n });\n }\n return NetworkQualityFractionLostStats;\n}());\nmodule.exports = NetworkQualityFractionLostStats;\n//# sourceMappingURL=networkqualityfractionloststats.js.map","'use strict';\n/**\n * Latency network quality statistics.\n * @property {?number} jitter - media jitter in seconds\n * @property {?number} rtt - round trip time in seconds\n * @property {?NetworkQualityLevel} level - {@link NetworkQualityLevel} for latency\n */\nvar NetworkQualityLatencyStats = /** @class */ (function () {\n /**\n * Construct a {@link NetworkQualityLatencyStats}.\n * @param {LatencyStats} latencyStats\n */\n function NetworkQualityLatencyStats(_a) {\n var _b = _a.jitter, jitter = _b === void 0 ? null : _b, _c = _a.rtt, rtt = _c === void 0 ? null : _c, _d = _a.level, level = _d === void 0 ? null : _d;\n Object.defineProperties(this, {\n jitter: {\n value: jitter,\n enumerable: true\n },\n rtt: {\n value: rtt,\n enumerable: true\n },\n level: {\n value: level,\n enumerable: true\n }\n });\n }\n return NetworkQualityLatencyStats;\n}());\nmodule.exports = NetworkQualityLatencyStats;\n//# sourceMappingURL=networkqualitylatencystats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NetworkQualitySendOrRecvStats = require('./networkqualitysendorrecvstats');\n/**\n * {@link NetworkQualitySendOrRecvStats} based on which a {@link Participant}'s\n * {@link NetworkQualityMediaStats}#recv is calculated.\n */\nvar NetworkQualityRecvStats = /** @class */ (function (_super) {\n __extends(NetworkQualityRecvStats, _super);\n /**\n * Construct a {@link NetworkQualityRecvStats}.\n * @param {SendOrRecvStats} sendOrRecvStats\n */\n function NetworkQualityRecvStats(sendOrRecvStats) {\n return _super.call(this, sendOrRecvStats) || this;\n }\n return NetworkQualityRecvStats;\n}(NetworkQualitySendOrRecvStats));\nmodule.exports = NetworkQualityRecvStats;\n//# sourceMappingURL=networkqualityrecvstats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar NetworkQualityMediaStats = require('./networkqualitymediastats');\n/**\n * {@link NetworkQualityMediaStats} for a {@link Participant}'s video.\n */\nvar NetworkQualityVideoStats = /** @class */ (function (_super) {\n __extends(NetworkQualityVideoStats, _super);\n /**\n * Construct a {@link NetworkQualityVideoStats}.\n * @param {MediaLevels} mediaLevels\n */\n function NetworkQualityVideoStats(mediaLevels) {\n return _super.call(this, mediaLevels) || this;\n }\n return NetworkQualityVideoStats;\n}(NetworkQualityMediaStats));\nmodule.exports = NetworkQualityVideoStats;\n//# sourceMappingURL=networkqualityvideostats.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar RemoteTrackPublicationSignaling = require('../remotetrackpublication');\n/**\n * @extends RemoteTrackPublicationSignaling\n */\nvar RemoteTrackPublicationV2 = /** @class */ (function (_super) {\n __extends(RemoteTrackPublicationV2, _super);\n /**\n * Construct a {@link RemoteTrackPublicationV2}.\n * @param {RemoteTrackPublicationV2#Representation} track\n * @param {boolean} isSwitchedOff\n *\n */\n function RemoteTrackPublicationV2(track, isSwitchedOff) {\n return _super.call(this, track.sid, track.name, track.kind, track.enabled, track.priority, isSwitchedOff) || this;\n }\n /**\n * Compare the {@link RemoteTrackPublicationV2} to a\n * {@link RemoteTrackPublicationV2#Representation} of itself and perform any\n * updates necessary.\n * @param {RemoteTrackPublicationV2#Representation} track\n * @returns {this}\n * @fires TrackSignaling#updated\n */\n RemoteTrackPublicationV2.prototype.update = function (track) {\n this.enable(track.enabled);\n this.setPriority(track.priority);\n return this;\n };\n return RemoteTrackPublicationV2;\n}(RemoteTrackPublicationSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link RemoteTrackPublicationV2}.\n * @typedef {LocalTrackPublicationV2#Representation} RemoteTrackPublicationV2#Representation\n * @property {boolean} subscribed\n */\nmodule.exports = RemoteTrackPublicationV2;\n//# sourceMappingURL=remotetrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TrackSignaling = require('./track');\n/**\n * A {@link RemoteTrackPublication} implementation\n * @extends TrackSignaling\n */\nvar RemoteTrackPublicationSignaling = /** @class */ (function (_super) {\n __extends(RemoteTrackPublicationSignaling, _super);\n /**\n * Construct a {@link RemoteTrackPublicationSignaling}.\n * @param {Track.SID} sid\n * @param {string} name\n * @param {Track.Kind} kind\n * @param {boolean} isEnabled\n * @param {Track.Priority} priority\n * @param {boolean} isSwitchedOff\n */\n function RemoteTrackPublicationSignaling(sid, name, kind, isEnabled, priority, isSwitchedOff) {\n var _this = _super.call(this, name, kind, isEnabled, priority) || this;\n Object.defineProperties(_this, {\n _isSwitchedOff: {\n value: isSwitchedOff,\n writable: true\n },\n });\n _this.setSid(sid);\n return _this;\n }\n Object.defineProperty(RemoteTrackPublicationSignaling.prototype, \"isSubscribed\", {\n /**\n * Whether the {@link RemoteTrackPublicationSignaling} is subscribed to.\n * @property {boolean}\n */\n get: function () {\n return !!this.trackTransceiver;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RemoteTrackPublicationSignaling.prototype, \"isSwitchedOff\", {\n /**\n * Whether the {@link RemoteTrackPublicationSignaling} is switched off.\n * @property {boolean}\n */\n get: function () {\n return this._isSwitchedOff;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @param {Error} error\n * @returns {this}\n */\n RemoteTrackPublicationSignaling.prototype.subscribeFailed = function (error) {\n if (!this.error) {\n this._error = error;\n this.emit('updated');\n }\n return this;\n };\n /**\n * Update the publish {@link Track.Priority}.\n * @param {Track.Priority} priority\n * @returns {this}\n */\n RemoteTrackPublicationSignaling.prototype.setPriority = function (priority) {\n if (this._priority !== priority) {\n this._priority = priority;\n this.emit('updated');\n }\n return this;\n };\n /**\n * Updates track switch on/off state.\n * @param {boolean} isSwitchedOff\n * @returns {this}\n */\n RemoteTrackPublicationSignaling.prototype.setSwitchedOff = function (isSwitchedOff) {\n if (this._isSwitchedOff !== isSwitchedOff) {\n this._isSwitchedOff = isSwitchedOff;\n this.emit('updated');\n }\n return this;\n };\n return RemoteTrackPublicationSignaling;\n}(TrackSignaling));\nmodule.exports = RemoteTrackPublicationSignaling;\n//# sourceMappingURL=remotetrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar TrackPrioritySignaling = /** @class */ (function (_super) {\n __extends(TrackPrioritySignaling, _super);\n /**\n * Construct a {@link TrackPrioritySignaling}.\n * @param {Promise} getReceiver\n */\n function TrackPrioritySignaling(getReceiver, options) {\n var _this = _super.call(this, getReceiver, 'track_priority', options) || this;\n Object.defineProperties(_this, {\n _enqueuedPriorityUpdates: {\n value: new Map()\n },\n });\n _this.on('ready', function (transport) {\n Array.from(_this._enqueuedPriorityUpdates.keys()).forEach(function (trackSid) {\n transport.publish({\n type: 'track_priority',\n track: trackSid,\n subscribe: _this._enqueuedPriorityUpdates.get(trackSid)\n });\n // NOTE(mpatwardhan)- we do not clear _enqueuedPriorityUpdates intentionally,\n // this cache will is used to re-send the priorities in case of VMS-FailOver.\n });\n });\n return _this;\n }\n /**\n * @param {Track.SID} trackSid\n * @param {'publish'|'subscribe'} publishOrSubscribe\n * @param {Track.Priority} priority\n */\n TrackPrioritySignaling.prototype.sendTrackPriorityUpdate = function (trackSid, publishOrSubscribe, priority) {\n if (publishOrSubscribe !== 'subscribe') {\n throw new Error('only subscribe priorities are supported, found: ' + publishOrSubscribe);\n }\n this._enqueuedPriorityUpdates.set(trackSid, priority);\n if (this._transport) {\n this._transport.publish({\n type: 'track_priority',\n track: trackSid,\n subscribe: priority\n });\n }\n };\n return TrackPrioritySignaling;\n}(MediaSignaling));\nmodule.exports = TrackPrioritySignaling;\n//# sourceMappingURL=trackprioritysignaling.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaSignaling = require('./mediasignaling');\n/**\n * @emits TrackSwitchOffSignalinging#updated\n */\nvar TrackSwitchOffSignaling = /** @class */ (function (_super) {\n __extends(TrackSwitchOffSignaling, _super);\n /**\n * Construct a {@link TrackSwitchOffSignaling}.\n * @param {Promise} getReceiver\n */\n function TrackSwitchOffSignaling(getReceiver, options) {\n var _this = _super.call(this, getReceiver, 'track_switch_off', options) || this;\n _this.on('ready', function (transport) {\n transport.on('message', function (message) {\n switch (message.type) {\n case 'track_switch_off':\n _this._setTrackSwitchOffUpdates(message.off || [], message.on || []);\n break;\n default:\n break;\n }\n });\n });\n return _this;\n }\n /**\n * @private\n * @param {[Track.SID]} tracksSwitchedOff\n * @param {[Track.SID]} tracksSwitchedOn\n * @returns {void}\n */\n TrackSwitchOffSignaling.prototype._setTrackSwitchOffUpdates = function (tracksSwitchedOff, tracksSwitchedOn) {\n this.emit('updated', tracksSwitchedOff, tracksSwitchedOn);\n };\n return TrackSwitchOffSignaling;\n}(MediaSignaling));\n/**\n * @event TrackSwitchOffSignaling#updated\n */\nmodule.exports = TrackSwitchOffSignaling;\n//# sourceMappingURL=trackswitchoffsignaling.js.map","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar Timeout = require('../../util/timeout');\nvar isDeepEqual = require('../../util').isDeepEqual;\nvar RENDER_HINT_RESPONSE_TIME_MS = 2000; // time to wait for server response (before resending all hints.)\nvar messageId = 1;\nvar RenderHintsSignaling = /** @class */ (function (_super) {\n __extends(RenderHintsSignaling, _super);\n /**\n * Construct a {@link RenderHintsSignaling}.\n */\n function RenderHintsSignaling(getReceiver, options) {\n var _this = _super.call(this, getReceiver, 'render_hints', options) || this;\n Object.defineProperties(_this, {\n _trackSidsToRenderHints: {\n value: new Map()\n },\n _responseTimer: {\n value: new Timeout(function () {\n _this._sendAllHints();\n // once timer fires, for next round double the delay.\n _this._responseTimer.setDelay(_this._responseTimer.delay * 2);\n }, RENDER_HINT_RESPONSE_TIME_MS, false),\n }\n });\n _this.on('ready', function (transport) {\n transport.on('message', function (message) {\n _this._log.debug('Incoming: ', message);\n switch (message.type) {\n case 'render_hints':\n _this._processHintResults((message && message.subscriber && message.subscriber.hints) || []);\n break;\n default:\n _this._log.warn('Unknown message type: ', message.type);\n break;\n }\n });\n // NOTE(mpatwardhan): When transport is set (either 1st time of after vms failover)\n // resend all track states.\n _this._sendAllHints();\n });\n return _this;\n }\n RenderHintsSignaling.prototype._sendAllHints = function () {\n var _this = this;\n // to force sending all hints simply mark all tracks as dirty.\n Array.from(this._trackSidsToRenderHints.keys()).forEach(function (trackSid) {\n var trackState = _this._trackSidsToRenderHints.get(trackSid);\n if (trackState.renderDimensions) {\n trackState.isDimensionDirty = true;\n }\n if ('enabled' in trackState) {\n trackState.isEnabledDirty = true;\n }\n });\n this._sendHints();\n };\n RenderHintsSignaling.prototype._processHintResults = function (hintResults) {\n var _this = this;\n this._responseTimer.clear();\n this._responseTimer.setDelay(RENDER_HINT_RESPONSE_TIME_MS);\n hintResults.forEach(function (hintResult) {\n if (hintResult.result !== 'OK') {\n _this._log.debug('Server error processing hint:', hintResult);\n }\n });\n this._sendHints();\n };\n RenderHintsSignaling.prototype._sendHints = function () {\n var _this = this;\n if (!this._transport || this._responseTimer.isSet) {\n return;\n }\n var hints = [];\n Array.from(this._trackSidsToRenderHints.keys()).forEach(function (trackSid) {\n var trackState = _this._trackSidsToRenderHints.get(trackSid);\n if (trackState.isEnabledDirty || trackState.isDimensionDirty) {\n var mspHint = {\n 'track': trackSid,\n };\n if (trackState.isEnabledDirty) {\n mspHint.enabled = trackState.enabled;\n trackState.isEnabledDirty = false;\n }\n if (trackState.isDimensionDirty) {\n // eslint-disable-next-line camelcase\n mspHint.render_dimensions = trackState.renderDimensions;\n trackState.isDimensionDirty = false;\n }\n hints.push(mspHint);\n }\n });\n if (hints.length > 0) {\n var payLoad = {\n type: 'render_hints',\n subscriber: {\n id: messageId++,\n hints: hints\n }\n };\n this._log.debug('Outgoing: ', payLoad);\n this._transport.publish(payLoad);\n this._responseTimer.start();\n }\n };\n /**\n * @param {Track.SID} trackSid\n * @param {ClientRenderHint} renderHint\n */\n RenderHintsSignaling.prototype.setTrackHint = function (trackSid, renderHint) {\n var trackState = this._trackSidsToRenderHints.get(trackSid) || { isEnabledDirty: false, isDimensionDirty: false };\n if ('enabled' in renderHint && trackState.enabled !== renderHint.enabled) {\n trackState.enabled = !!renderHint.enabled;\n trackState.isEnabledDirty = true;\n }\n if (renderHint.renderDimensions && !isDeepEqual(renderHint.renderDimensions, trackState.renderDimensions)) {\n // eslint-disable-next-line camelcase\n trackState.renderDimensions = renderHint.renderDimensions;\n trackState.isDimensionDirty = true;\n }\n this._trackSidsToRenderHints.set(trackSid, trackState);\n this._sendHints();\n };\n /**\n * must be called when track is unsubscribed.\n * @param {Track.SID} trackSid\n */\n RenderHintsSignaling.prototype.clearTrackHint = function (trackSid) {\n this._trackSidsToRenderHints.delete(trackSid);\n };\n return RenderHintsSignaling;\n}(MediaSignaling));\nmodule.exports = RenderHintsSignaling;\n//# sourceMappingURL=renderhintssignaling.js.map","/* eslint callback-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar MediaSignaling = require('./mediasignaling');\nvar messageId = 1;\nvar PublisherHintsSignaling = /** @class */ (function (_super) {\n __extends(PublisherHintsSignaling, _super);\n /**\n * Construct a {@link RenderHintsSignaling}.\n */\n function PublisherHintsSignaling(getReceiver, options) {\n var _this = _super.call(this, getReceiver, 'publisher_hints', options) || this;\n _this.on('ready', function (transport) {\n _this._log.debug('publisher_hints transport ready:', transport);\n transport.on('message', function (message) {\n _this._log.debug('Incoming: ', message);\n switch (message.type) {\n case 'publisher_hints':\n if (message.publisher && message.publisher.hints && message.publisher.id) {\n _this._processPublisherHints(message.publisher.hints, message.publisher.id);\n }\n break;\n default:\n _this._log.warn('Unknown message type: ', message.type);\n break;\n }\n });\n });\n return _this;\n }\n PublisherHintsSignaling.prototype.sendTrackReplaced = function (_a) {\n var trackSid = _a.trackSid;\n if (!this._transport) {\n return;\n }\n var payLoad = {\n type: 'client_reset',\n track: trackSid,\n id: messageId++\n };\n this._log.debug('Outgoing: ', payLoad);\n this._transport.publish(payLoad);\n };\n PublisherHintsSignaling.prototype.sendHintResponse = function (_a) {\n var id = _a.id, hints = _a.hints;\n if (!this._transport) {\n return;\n }\n var payLoad = {\n type: 'publisher_hints',\n id: id,\n hints: hints\n };\n this._log.debug('Outgoing: ', payLoad);\n this._transport.publish(payLoad);\n };\n /**\n * @private\n */\n PublisherHintsSignaling.prototype._processPublisherHints = function (hints, id) {\n try {\n this.emit('updated', hints, id);\n }\n catch (ex) {\n this._log.error('error processing hints:', ex);\n }\n };\n return PublisherHintsSignaling;\n}(MediaSignaling));\nmodule.exports = PublisherHintsSignaling;\n//# sourceMappingURL=publisherhintsignaling.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar StateMachine = require('../../statemachine');\nvar TwilioConnection = require('../../twilioconnection');\nvar DefaultBackoff = require('../../util/backoff');\nvar reconnectBackoffConfig = require('../../util/constants').reconnectBackoffConfig;\nvar Timeout = require('../../util/timeout');\nvar _a = require('../../util/constants'), SDK_NAME = _a.SDK_NAME, SDK_VERSION = _a.SDK_VERSION, SDP_FORMAT = _a.SDP_FORMAT;\nvar _b = require('../../util'), createBandwidthProfilePayload = _b.createBandwidthProfilePayload, createMediaSignalingPayload = _b.createMediaSignalingPayload, createMediaWarningsPayload = _b.createMediaWarningsPayload, createSubscribePayload = _b.createSubscribePayload, getUserAgent = _b.getUserAgent, isNonArrayObject = _b.isNonArrayObject;\nvar _c = require('../../util/twilio-video-errors'), createTwilioError = _c.createTwilioError, RoomCompletedError = _c.RoomCompletedError, SignalingConnectionError = _c.SignalingConnectionError, SignalingServerBusyError = _c.SignalingServerBusyError;\nvar ICE_VERSION = 1;\nvar RSP_VERSION = 2;\n/*\nTwilioConnectionTransport States\n----------------\n\n +-----------+\n | |\n | syncing |---------+\n | | |\n +-----------+ |\n ^ | |\n | | |\n | v v\n +------------+ +-----------+ +--------------+\n | | | | | |\n | connecting |--->| connected |--->| disconnected |\n | | | | | |\n +------------+ +-----------+ +--------------+\n | ^\n | |\n | |\n +------------------------------+\n\n*/\nvar states = {\n connecting: [\n 'connected',\n 'disconnected'\n ],\n connected: [\n 'disconnected',\n 'syncing'\n ],\n syncing: [\n 'connected',\n 'disconnected'\n ],\n disconnected: []\n};\n/**\n * A {@link TwilioConnectionTransport} supports sending and receiving Room Signaling Protocol\n * (RSP) messages. It also supports RSP requests, such as Sync and Disconnect.\n * @extends StateMachine\n * @emits TwilioConnectionTransport#connected\n * @emits TwilioConnectionTransport#message\n */\nvar TwilioConnectionTransport = /** @class */ (function (_super) {\n __extends(TwilioConnectionTransport, _super);\n /**\n * Construct a {@link TwilioConnectionTransport}.\n * @param {?string} name\n * @param {string} accessToken\n * @param {ParticipantSignaling} localParticipant\n * @param {PeerConnectionManager} peerConnectionManager\n * @param {string} wsServer\n * @param {object} [options]\n */\n function TwilioConnectionTransport(name, accessToken, localParticipant, peerConnectionManager, wsServer, options) {\n var _this = this;\n options = Object.assign({\n Backoff: DefaultBackoff,\n TwilioConnection: TwilioConnection,\n iceServers: null,\n trackPriority: true,\n trackSwitchOff: true,\n renderHints: true,\n userAgent: getUserAgent()\n }, options);\n _this = _super.call(this, 'connecting', states) || this;\n Object.defineProperties(_this, {\n _accessToken: {\n value: accessToken\n },\n _automaticSubscription: {\n value: options.automaticSubscription\n },\n _bandwidthProfile: {\n value: options.bandwidthProfile\n },\n _dominantSpeaker: {\n value: options.dominantSpeaker\n },\n _adaptiveSimulcast: {\n value: options.adaptiveSimulcast\n },\n _eventObserver: {\n value: options.eventObserver,\n writable: false\n },\n _renderHints: {\n value: options.renderHints\n },\n _iceServersStatus: {\n value: Array.isArray(options.iceServers)\n ? 'overrode'\n : 'acquire'\n },\n _localParticipant: {\n value: localParticipant\n },\n _name: {\n value: name,\n },\n _networkQuality: {\n value: isNonArrayObject(options.networkQuality) || options.networkQuality\n },\n _notifyWarnings: {\n value: options.notifyWarnings\n },\n _options: {\n value: options\n },\n _peerConnectionManager: {\n value: peerConnectionManager\n },\n _sessionTimer: {\n value: null,\n writable: true\n },\n _sessionTimeoutMS: {\n value: 0,\n writable: true\n },\n _reconnectBackoff: {\n value: new options.Backoff(reconnectBackoffConfig)\n },\n _session: {\n value: null,\n writable: true\n },\n _trackPriority: {\n value: options.trackPriority\n },\n _trackSwitchOff: {\n value: options.trackSwitchOff\n },\n _twilioConnection: {\n value: null,\n writable: true\n },\n _updatesReceived: {\n value: []\n },\n _updatesToSend: {\n value: []\n },\n _userAgent: {\n value: options.userAgent\n },\n _wsServer: {\n value: wsServer\n }\n });\n setupTransport(_this);\n return _this;\n }\n /**\n * Create a Connect, Sync or Disconnect RSP message.\n * @private\n * @returns {?object}\n */\n TwilioConnectionTransport.prototype._createConnectOrSyncOrDisconnectMessage = function () {\n if (this.state === 'connected') {\n return null;\n }\n if (this.state === 'disconnected') {\n return {\n session: this._session,\n type: 'disconnect',\n version: RSP_VERSION\n };\n }\n var type = {\n connecting: 'connect',\n syncing: 'sync'\n }[this.state];\n var message = {\n name: this._name,\n participant: this._localParticipant.getState(),\n peer_connections: this._peerConnectionManager.getStates(),\n type: type,\n version: RSP_VERSION\n };\n if (message.type === 'connect') {\n message.ice_servers = this._iceServersStatus;\n message.publisher = {\n name: SDK_NAME,\n sdk_version: SDK_VERSION,\n user_agent: this._userAgent\n };\n if (this._bandwidthProfile) {\n message.bandwidth_profile = createBandwidthProfilePayload(this._bandwidthProfile);\n }\n if (this._notifyWarnings) {\n message.participant.media_warnings = createMediaWarningsPayload(this._notifyWarnings);\n }\n message.media_signaling = createMediaSignalingPayload(this._dominantSpeaker, this._networkQuality, this._trackPriority, this._trackSwitchOff, this._adaptiveSimulcast, this._renderHints);\n message.subscribe = createSubscribePayload(this._automaticSubscription);\n message.format = SDP_FORMAT;\n message.token = this._accessToken;\n }\n else if (message.type === 'sync') {\n message.session = this._session;\n message.token = this._accessToken;\n }\n else if (message.type === 'update') {\n message.session = this._session;\n }\n return message;\n };\n /**\n * Create an \"ice\" message.\n * @private\n */\n TwilioConnectionTransport.prototype._createIceMessage = function () {\n return {\n edge: 'roaming',\n token: this._accessToken,\n type: 'ice',\n version: ICE_VERSION\n };\n };\n /**\n * Send a Connect, Sync or Disconnect RSP message.\n * @private\n */\n TwilioConnectionTransport.prototype._sendConnectOrSyncOrDisconnectMessage = function () {\n var message = this._createConnectOrSyncOrDisconnectMessage();\n if (message) {\n this._twilioConnection.sendMessage(message);\n }\n };\n /**\n * Disconnect the {@link TwilioConnectionTransport}. Returns true if calling the method resulted\n * in disconnection.\n * @param {TwilioError} [error]\n * @returns {boolean}\n */\n TwilioConnectionTransport.prototype.disconnect = function (error) {\n if (this.state !== 'disconnected') {\n this.preempt('disconnected', null, [error]);\n this._sendConnectOrSyncOrDisconnectMessage();\n this._twilioConnection.close();\n return true;\n }\n return false;\n };\n /**\n * Publish an RSP Update. Returns true if calling the method resulted in\n * publishing (or eventually publishing) the update.\n * @param {object} update\n * @returns {boolean}\n */\n TwilioConnectionTransport.prototype.publish = function (update) {\n switch (this.state) {\n case 'connected':\n this._twilioConnection.sendMessage(Object.assign({\n session: this._session,\n type: 'update',\n version: RSP_VERSION\n }, update));\n return true;\n case 'connecting':\n case 'syncing':\n this._updatesToSend.push(update);\n return true;\n case 'disconnected':\n default:\n return false;\n }\n };\n /**\n * Publish (or queue) an event to the Insights gateway.\n * @param {string} group - Event group name\n * @param {string} name - Event name\n * @param {string} level - Event level\n * @param {object} payload - Event payload\n * @returns {void}\n */\n TwilioConnectionTransport.prototype.publishEvent = function (group, name, level, payload) {\n this._eventObserver.emit('event', { group: group, name: name, level: level, payload: payload });\n };\n /**\n * Sync the {@link TwilioConnectionTransport}. Returns true if calling the method resulted in\n * syncing.\n * @returns {boolean}\n */\n TwilioConnectionTransport.prototype.sync = function () {\n if (this.state === 'connected') {\n this.preempt('syncing');\n this._sendConnectOrSyncOrDisconnectMessage();\n return true;\n }\n return false;\n };\n /**\n * @private\n * @returns {void}\n */\n TwilioConnectionTransport.prototype._setSession = function (session, sessionTimeout) {\n this._session = session;\n this._sessionTimeoutMS = sessionTimeout * 1000;\n };\n /**\n * Determines if we should attempt reconnect.\n * returns a Promise to wait on before attempting to\n * reconnect. returns null if its not okay to reconnect.\n * @private\n * @returns {Promise}\n */\n TwilioConnectionTransport.prototype._getReconnectTimer = function () {\n var _this = this;\n if (this._sessionTimeoutMS === 0) {\n // this means either we have never connected.\n // or we timed out while trying to reconnect\n // In either case we do not want to reconnect.\n return null;\n }\n // start session timer\n if (!this._sessionTimer) {\n this._sessionTimer = new Timeout(function () {\n // ensure that _clearReconnectTimer wasn't\n // called while we were waiting.\n if (_this._sessionTimer) {\n // do not allow any more reconnect attempts.\n _this._sessionTimeoutMS = 0;\n }\n }, this._sessionTimeoutMS);\n }\n // return promise that waits with exponential backoff.\n return new Promise(function (resolve) {\n _this._reconnectBackoff.backoff(resolve);\n });\n };\n /**\n * clears the session reconnect timer.\n *\n * @private\n * @returns {void}\n */\n TwilioConnectionTransport.prototype._clearReconnectTimer = function () {\n this._reconnectBackoff.reset();\n if (this._sessionTimer) {\n this._sessionTimer.clear();\n this._sessionTimer = null;\n }\n };\n return TwilioConnectionTransport;\n}(StateMachine));\n/**\n * @event TwilioConnectionTransport#connected\n * @param {object} initialState\n */\n/**\n * @event TwilioConnectionTransport#message\n * @param {object} peerConnections\n */\nfunction reducePeerConnections(peerConnections) {\n return Array.from(peerConnections.reduce(function (peerConnectionsById, update) {\n var reduced = peerConnectionsById.get(update.id) || update;\n // First, reduce the top-level `description` property.\n if (!reduced.description && update.description) {\n reduced.description = update.description;\n }\n else if (reduced.description && update.description) {\n if (update.description.revision > reduced.description.revision) {\n reduced.description = update.description;\n }\n }\n // Then, reduce the top-level `ice` property.\n if (!reduced.ice && update.ice) {\n reduced.ice = update.ice;\n }\n else if (reduced.ice && update.ice) {\n if (update.ice.revision > reduced.ice.revision) {\n reduced.ice = update.ice;\n }\n }\n // Finally, update the map.\n peerConnectionsById.set(reduced.id, reduced);\n return peerConnectionsById;\n }, new Map()).values());\n}\nfunction reduceUpdates(updates) {\n return updates.reduce(function (reduced, update) {\n // First, reduce the top-level `participant` property.\n if (!reduced.participant && update.participant) {\n reduced.participant = update.participant;\n }\n else if (reduced.participant && update.participant) {\n if (update.participant.revision > reduced.participant.revision) {\n reduced.participant = update.participant;\n }\n }\n // Then, reduce the top-level `peer_connections` property.\n /* eslint camelcase:0 */\n if (!reduced.peer_connections && update.peer_connections) {\n reduced.peer_connections = reducePeerConnections(update.peer_connections);\n }\n else if (reduced.peer_connections && update.peer_connections) {\n reduced.peer_connections = reducePeerConnections(reduced.peer_connections.concat(update.peer_connections));\n }\n return reduced;\n }, {});\n}\nfunction setupTransport(transport) {\n function createOrResetTwilioConnection() {\n if (transport.state === 'disconnected') {\n return;\n }\n if (transport._twilioConnection) {\n transport._twilioConnection.removeListener('message', handleMessage);\n }\n var _iceServersStatus = transport._iceServersStatus, _options = transport._options, _wsServer = transport._wsServer, state = transport.state;\n var TwilioConnection = _options.TwilioConnection;\n var twilioConnection = new TwilioConnection(_wsServer, Object.assign({\n helloBody: state === 'connecting' && _iceServersStatus === 'acquire'\n ? transport._createIceMessage()\n : transport._createConnectOrSyncOrDisconnectMessage()\n }, _options));\n twilioConnection.once('close', function (reason) {\n if (reason === TwilioConnection.CloseReason.LOCAL) {\n disconnect();\n }\n else {\n disconnect(new Error(reason));\n }\n });\n twilioConnection.on('message', handleMessage);\n transport._twilioConnection = twilioConnection;\n }\n function disconnect(error) {\n if (transport.state === 'disconnected') {\n return;\n }\n if (!error) {\n transport.disconnect();\n return;\n }\n var reconnectTimer = transport._getReconnectTimer();\n if (!reconnectTimer) {\n var twilioError = error.message === TwilioConnection.CloseReason.BUSY\n ? new SignalingServerBusyError()\n : new SignalingConnectionError();\n transport.disconnect(twilioError);\n return;\n }\n if (transport.state === 'connected') {\n transport.preempt('syncing');\n }\n reconnectTimer.then(createOrResetTwilioConnection);\n }\n function handleMessage(message) {\n if (transport.state === 'disconnected') {\n return;\n }\n if (message.type === 'error') {\n transport.disconnect(createTwilioError(message.code, message.message));\n return;\n }\n switch (transport.state) {\n case 'connected':\n switch (message.type) {\n case 'connected':\n case 'synced':\n case 'update':\n case 'warning':\n transport.emit('message', message);\n return;\n case 'disconnected':\n transport.disconnect(message.status === 'completed'\n ? new RoomCompletedError()\n : null);\n return;\n default:\n // Do nothing.\n return;\n }\n case 'connecting':\n switch (message.type) {\n case 'iced':\n transport._options.onIced(message.ice_servers).then(function () {\n transport._sendConnectOrSyncOrDisconnectMessage();\n });\n return;\n case 'connected':\n transport._setSession(message.session, message.options.session_timeout);\n transport.emit('connected', message);\n transport.preempt('connected');\n return;\n case 'synced':\n case 'update':\n transport._updatesReceived.push(message);\n return;\n case 'disconnected':\n transport.disconnect(message.status === 'completed'\n ? new RoomCompletedError()\n : null);\n return;\n default:\n // Do nothing.\n return;\n }\n case 'syncing':\n switch (message.type) {\n case 'connected':\n case 'update':\n transport._updatesReceived.push(message);\n return;\n case 'synced':\n transport._clearReconnectTimer();\n transport.emit('message', message);\n transport.preempt('connected');\n return;\n case 'disconnected':\n transport.disconnect(message.status === 'completed'\n ? new RoomCompletedError()\n : null);\n return;\n default:\n // Do nothing.\n return;\n }\n default:\n // Impossible\n return;\n }\n }\n transport.on('stateChanged', function stateChanged(state) {\n switch (state) {\n case 'connected': {\n var updates = transport._updatesToSend.splice(0);\n if (updates.length) {\n transport.publish(reduceUpdates(updates));\n }\n transport._updatesReceived.splice(0).forEach(function (update) { return transport.emit('message', update); });\n return;\n }\n case 'disconnected':\n transport._twilioConnection.removeListener('message', handleMessage);\n transport.removeListener('stateChanged', stateChanged);\n return;\n case 'syncing':\n // Do nothing.\n return;\n default:\n // Impossible\n return;\n }\n });\n var _options = transport._options, _iceServersStatus = transport._iceServersStatus;\n var iceServers = _options.iceServers, onIced = _options.onIced;\n if (_iceServersStatus === 'overrode') {\n onIced(iceServers).then(createOrResetTwilioConnection);\n }\n else {\n createOrResetTwilioConnection();\n }\n}\nmodule.exports = TwilioConnectionTransport;\n//# sourceMappingURL=twilioconnectiontransport.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LocalParticipantSignaling = require('../localparticipant');\nvar LocalTrackPublicationV2 = require('./localtrackpublication');\nvar DEFAULT_LOG_LEVEL = require('../../util/constants').DEFAULT_LOG_LEVEL;\nvar Log = require('../../util/log');\nvar _a = require('../../util'), buildLogLevels = _a.buildLogLevels, isDeepEqual = _a.isDeepEqual;\n/**\n * @extends ParticipantSignaling\n * @property {BandwidthProfileOptions} bandwidthProfile\n * @property {NetworkQualityConfigurationImpl} networkQualityConfiguration\n * @property {number} revision\n * @emits LocalParticipantV2#updated\n */\nvar LocalParticipantV2 = /** @class */ (function (_super) {\n __extends(LocalParticipantV2, _super);\n /**\n * Construct a {@link LocalParticipantV2}.\n * @param {EncodingParametersImpl} encodingParameters\n * @param {NetworkQualityConfigurationImpl} networkQualityConfiguration\n * @param {object} [options]\n */\n function LocalParticipantV2(encodingParameters, networkQualityConfiguration, options) {\n var _this = this;\n options = Object.assign({\n logLevel: DEFAULT_LOG_LEVEL,\n LocalTrackPublicationV2: LocalTrackPublicationV2\n }, options);\n _this = _super.call(this) || this;\n var logLevels = buildLogLevels(options.logLevel);\n Object.defineProperties(_this, {\n _bandwidthProfile: {\n value: null,\n writable: true\n },\n _bandwidthProfileRevision: {\n value: 0,\n writable: true\n },\n _encodingParameters: {\n value: encodingParameters\n },\n _removeListeners: {\n value: new Map()\n },\n _LocalTrackPublicationV2: {\n value: options.LocalTrackPublicationV2\n },\n _log: {\n value: options.log\n ? options.log.createLog('default', _this)\n : new Log('default', _this, logLevels, options.loggerName)\n },\n _publishedRevision: {\n writable: true,\n value: 0\n },\n _revision: {\n writable: true,\n value: 1\n },\n _signalingRegion: {\n value: null,\n writable: true\n },\n audioProcessors: {\n value: [],\n writable: true\n },\n bandwidthProfile: {\n enumerable: true,\n get: function () {\n return this._bandwidthProfile;\n }\n },\n bandwidthProfileRevision: {\n enumerable: true,\n get: function () {\n return this._bandwidthProfileRevision;\n }\n },\n networkQualityConfiguration: {\n enumerable: true,\n value: networkQualityConfiguration\n },\n revision: {\n enumerable: true,\n get: function () {\n return this._revision;\n }\n },\n signalingRegion: {\n enumerable: true,\n get: function () {\n return this._signalingRegion;\n }\n }\n });\n return _this;\n }\n LocalParticipantV2.prototype.toString = function () {\n return \"[LocalParticipantSignaling: \" + this.sid + \"]\";\n };\n /**\n * Set the signalingRegion.\n * @param {string} signalingRegion.\n */\n LocalParticipantV2.prototype.setSignalingRegion = function (signalingRegion) {\n if (!this._signalingRegion) {\n this._signalingRegion = signalingRegion;\n }\n };\n /**\n * Update the {@link BandwidthProfileOptions}.\n * @param {BandwidthProfileOptions} bandwidthProfile\n */\n LocalParticipantV2.prototype.setBandwidthProfile = function (bandwidthProfile) {\n if (!isDeepEqual(this._bandwidthProfile, bandwidthProfile)) {\n // NOTE(mmalavalli): Object.assign() copies the values of only\n // the top level properties. In order to deep copy the object, we\n // stringify and parse the object.\n this._bandwidthProfile = JSON.parse(JSON.stringify(bandwidthProfile));\n this._bandwidthProfileRevision++;\n this.didUpdate();\n }\n };\n /**\n * Sets the AudioProcessors enabled for this room.\n * @param {string[]} audioProcessors\n */\n LocalParticipantV2.prototype.setAudioProcessors = function (audioProcessors) {\n this.audioProcessors = audioProcessors;\n };\n /**\n * returns current {@link EncodingParametersImpl}.\n * @returns {EncodingParametersImpl}\n */\n LocalParticipantV2.prototype.getParameters = function () {\n return this._encodingParameters;\n };\n /**\n * Set the {@link EncodingParameters}.\n * @param {?EncodingParameters} encodingParameters\n * @returns {this}\n */\n LocalParticipantV2.prototype.setParameters = function (encodingParameters) {\n this._encodingParameters.update(encodingParameters);\n return this;\n };\n /**\n * Update the {@link LocalParticipantV2} with the new state.\n * @param {Published} published\n * @returns {this}\n */\n LocalParticipantV2.prototype.update = function (published) {\n if (this._publishedRevision >= published.revision) {\n return this;\n }\n this._publishedRevision = published.revision;\n published.tracks.forEach(function (publicationState) {\n var localTrackPublicationV2 = this.tracks.get(publicationState.id);\n if (localTrackPublicationV2) {\n localTrackPublicationV2.update(publicationState);\n }\n }, this);\n return this;\n };\n LocalParticipantV2.prototype.updateMediaStates = function (mediaStates) {\n if (!mediaStates || !mediaStates.tracks) {\n return this;\n }\n Array.from(this.tracks.values()).forEach(function (publication) {\n var states = mediaStates.tracks[publication.sid];\n if (states) {\n publication.updateMediaStates(states);\n }\n });\n return this;\n };\n /**\n * @protected\n * @param {DataTrackSender|MediaTrackSender} trackSender\n * @param {string} name\n * @param {Track.Priority} priority\n * @param {?NoiseCancellationVendor} noiseCancellationVendor\n * @returns {LocalTrackPublicationV2}\n */\n LocalParticipantV2.prototype._createLocalTrackPublicationSignaling = function (trackSender, name, priority, noiseCancellationVendor) {\n return new this._LocalTrackPublicationV2(trackSender, name, priority, noiseCancellationVendor, { log: this._log });\n };\n /**\n * Add a {@link LocalTrackPublicationV2} for the given {@link DataTrackSender}\n * or {@link MediaTrackSender} to the {@link LocalParticipantV2}.\n * @param {DataTrackSender|MediaTrackSender} trackSender\n * @param {string} name\n * @param {Track.Priority} priority\n * @returns {this}\n */\n LocalParticipantV2.prototype.addTrack = function (trackSender, name, priority, noiseCancellationVendor) {\n var _this = this;\n _super.prototype.addTrack.call(this, trackSender, name, priority, noiseCancellationVendor);\n var publication = this.getPublication(trackSender);\n var isEnabled = publication.isEnabled, updatedPriority = publication.updatedPriority;\n var updated = function () {\n // NOTE(mmalavalli): The LocalParticipantV2's state is only published if\n // the \"updated\" event is emitted due to LocalTrackPublicationV2's\n // .isEnabled or .updatedPriority being changed. We do not publish if it is fired due to the\n // LocalTrackPublicationV2's .sid being set.\n if (isEnabled !== publication.isEnabled || updatedPriority !== publication.updatedPriority) {\n _this.didUpdate();\n isEnabled = publication.isEnabled;\n updatedPriority = publication.updatedPriority;\n }\n };\n publication.on('updated', updated);\n this._removeListener(publication);\n this._removeListeners.set(publication, function () { return publication.removeListener('updated', updated); });\n this.didUpdate();\n return this;\n };\n /**\n * @private\n * @param {LocalTrackPublicationV2} publication\n * @returns {void}\n */\n LocalParticipantV2.prototype._removeListener = function (publication) {\n var removeListener = this._removeListeners.get(publication);\n if (removeListener) {\n removeListener();\n }\n };\n /**\n * Get the current state of the {@link LocalParticipantV2}.\n * @returns {object}\n */\n LocalParticipantV2.prototype.getState = function () {\n return {\n revision: this.revision,\n tracks: Array.from(this.tracks.values()).map(function (track) { return track.getState(); })\n };\n };\n /**\n * Increment the revision for the {@link LocalParticipantV2}.\n * @private\n * @returns {void}\n */\n LocalParticipantV2.prototype.didUpdate = function () {\n this._revision++;\n this.emit('updated');\n };\n /**\n * Remove the {@link LocalTrackPublicationV2} for the given {@link DataTrackSender}\n * or {@link MediaTrackSender} from the {@link LocalParticipantV2}.\n * @param {DataTrackSender|MediaTrackSender} trackSender\n * @returns {?LocalTrackPublicationV2}\n */\n LocalParticipantV2.prototype.removeTrack = function (trackSender) {\n var publication = _super.prototype.removeTrack.call(this, trackSender);\n if (publication) {\n trackSender.removeClone(publication.trackTransceiver);\n this._removeListener(publication);\n this.didUpdate();\n }\n return publication;\n };\n /**\n * Updates the verbosity of network quality information.\n * @param {NetworkQualityConfiguration} networkQualityConfiguration\n * @returns {void}\n */\n LocalParticipantV2.prototype.setNetworkQualityConfiguration = function (networkQualityConfiguration) {\n this.networkQualityConfiguration.update(networkQualityConfiguration);\n };\n /**\n * updates encodings for simulcast layers.\n * @param {Track.SID} trackSid\n * @param {Array<{enabled: boolean, layer_index: number}>} encodings\n * @returns {Promise} string indicating result of the operation. can be one of\n * \"OK\", \"INVALID_HINT\", \"COULD_NOT_APPLY_HINT\", \"UNKNOWN_TRACK\"\n */\n LocalParticipantV2.prototype.setPublisherHint = function (trackSid, encodings) {\n var trackSignaling = Array.from(this.tracks.values()).find(function (trackPub) { return trackPub.sid === trackSid; });\n if (!trackSignaling) {\n this._log.warn(\"track:\" + trackSid + \" not found\");\n return Promise.resolve('UNKNOWN_TRACK');\n }\n return trackSignaling.trackTransceiver.setPublisherHint(encodings);\n };\n return LocalParticipantV2;\n}(LocalParticipantSignaling));\n/**\n * @interface Published\n * @property {number} revision\n * @property {Array} tracks\n */\n/**\n * @typedef {CreatedTrack|ReadyTrack|FailedTrack} PublishedTrack\n */\n/**\n * @interface CreatedTrack\n * @property {Track.ID} id\n * @property {string} state - \"created\"\n */\n/**\n * @interface ReadyTrack\n * @property {Track.ID} id\n * @property {Track.SID} sid\n * @property {string} state - \"ready\"\n */\n/**\n * @interface FailedTrack\n * @property {Track.ID} id\n * @property {TrackError} error\n * @property {string} state - \"failed\"\n */\n/**\n * @interface TrackError\n * @property {number} code\n * @property {string} message\n */\n/**\n * @event LocalParticipantV2#updated\n */\nmodule.exports = LocalParticipantV2;\n//# sourceMappingURL=localparticipant.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ParticipantSignaling = require('./participant');\nvar LocalParticipantSignaling = /** @class */ (function (_super) {\n __extends(LocalParticipantSignaling, _super);\n function LocalParticipantSignaling() {\n var _this = _super.call(this) || this;\n Object.defineProperties(_this, {\n _publicationsToTrackSenders: {\n value: new Map()\n },\n _trackSendersToPublications: {\n value: new Map()\n }\n });\n return _this;\n }\n /**\n * @param {DataTrackSender|MediaTrackSender} trackSender\n * @param {string} name\n * @param {Track.Priority} priority\n * @param {?NoiseCancellationVendor} noiseCancellationVendor\n * @returns {LocalTrackPublicationSignaling} publication\n */\n LocalParticipantSignaling.prototype.addTrack = function (trackSender, name, priority, noiseCancellationVendor) {\n if (noiseCancellationVendor === void 0) { noiseCancellationVendor = null; }\n var publication = this._createLocalTrackPublicationSignaling(trackSender, name, priority, noiseCancellationVendor);\n this._trackSendersToPublications.set(trackSender, publication);\n this._publicationsToTrackSenders.set(publication, trackSender);\n _super.prototype.addTrack.call(this, publication);\n return this;\n };\n /**\n * @param {DataTrackSender|MediaTrackSender} trackSender\n * @returns {?LocalTrackPublicationSignaling}\n */\n LocalParticipantSignaling.prototype.getPublication = function (trackSender) {\n return this._trackSendersToPublications.get(trackSender) || null;\n };\n /**\n * @param {LocalTrackPublicationSignaling} trackPublication\n * @returns {?DataTrackSender|MediaTrackSender}\n */\n LocalParticipantSignaling.prototype.getSender = function (trackPublication) {\n return this._publicationsToTrackSenders.get(trackPublication) || null;\n };\n /**\n * @param {DataTrackSender|MediaTrackSender} trackSender\n * @returns {?LocalTrackPublicationSignaling}\n */\n LocalParticipantSignaling.prototype.removeTrack = function (trackSender) {\n var publication = this._trackSendersToPublications.get(trackSender);\n if (!publication) {\n return null;\n }\n this._trackSendersToPublications.delete(trackSender);\n this._publicationsToTrackSenders.delete(publication);\n var didDelete = _super.prototype.removeTrack.call(this, publication);\n if (didDelete) {\n publication.stop();\n }\n return publication;\n };\n return LocalParticipantSignaling;\n}(ParticipantSignaling));\nmodule.exports = LocalParticipantSignaling;\n//# sourceMappingURL=localparticipant.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar LocalTrackPublicationSignaling = require('../localtrackpublication');\nvar TwilioWarning = require('../../util/twiliowarning');\nvar createTwilioError = require('../../util/twilio-video-errors').createTwilioError;\n/**\n * @extends LocalTrackPublicationSignaling\n */\nvar LocalTrackPublicationV2 = /** @class */ (function (_super) {\n __extends(LocalTrackPublicationV2, _super);\n /**\n * Construct a {@link LocalTrackPublicationV2}.\n * @param {DataTrackSender|MediaTrackSender} trackSender\n * @param {string} name\n * @param {Track.Priority} priority\n * @param {?NoiseCancellationVendor} noiseCancellationVendor\n * @param {object} [options]\n */\n function LocalTrackPublicationV2(trackSender, name, priority, noiseCancellationVendor, options) {\n var _this = _super.call(this, trackSender, name, priority) || this;\n Object.defineProperties(_this, {\n _log: {\n value: options.log.createLog('default', _this)\n },\n _mediaStates: {\n value: { recordings: null },\n writable: true\n },\n _noiseCancellationVendor: {\n value: noiseCancellationVendor,\n }\n });\n return _this;\n }\n /**\n * Get the {@link LocalTrackPublicationV2#Representation} of a given {@link TrackSignaling}.\n * @returns {LocalTrackPublicationV2#Representation} - without the SID\n */\n LocalTrackPublicationV2.prototype.getState = function () {\n var state = {\n enabled: this.isEnabled,\n id: this.id,\n kind: this.kind,\n name: this.name,\n priority: this.updatedPriority,\n };\n if (this._noiseCancellationVendor) {\n // eslint-disable-next-line camelcase\n state.audio_processor = this._noiseCancellationVendor;\n }\n return state;\n };\n LocalTrackPublicationV2.prototype.toString = function () {\n return \"[LocalTrackPublicationV2: \" + this.sid + \"]\";\n };\n /**\n * Compare the {@link LocalTrackPublicationV2} to a {@link LocalTrackPublicationV2#Representation} of itself\n * and perform any updates necessary.\n * @param {PublishedTrack} track\n * @returns {this}\n * @fires TrackSignaling#updated\n */\n LocalTrackPublicationV2.prototype.update = function (track) {\n switch (track.state) {\n case 'ready':\n this.setSid(track.sid);\n break;\n case 'failed': {\n var error = track.error;\n this.publishFailed(createTwilioError(error.code, error.message));\n break;\n }\n default: // 'created'\n break;\n }\n return this;\n };\n LocalTrackPublicationV2.prototype.updateMediaStates = function (mediaStates) {\n if (!mediaStates || !mediaStates.recordings ||\n this._mediaStates.recordings === mediaStates.recordings) {\n return this;\n }\n this._mediaStates.recordings = mediaStates.recordings;\n switch (this._mediaStates.recordings) {\n case 'OK':\n this._log.info('Warnings have cleared.');\n this.emit('warningsCleared');\n break;\n case 'NO_MEDIA':\n this._log.warn('Recording media lost.');\n this.emit('warning', TwilioWarning.recordingMediaLost);\n break;\n default:\n this._log.warn(\"Unknown media state detected: \" + this._mediaStates.recordings);\n break;\n }\n return this;\n };\n return LocalTrackPublicationV2;\n}(LocalTrackPublicationSignaling));\n/**\n * The Room Signaling Protocol (RSP) representation of a {@link LocalTrackPublicationV2}.\n * @typedef {object} LocalTrackPublicationV2#Representation\n * @property {boolean} enabled\n * @property {Track.ID} id\n * @property {Track.Kind} kind\n * @property {string} name\n * @priority {Track.Priority} priority\n * @property {Track.SID} sid\n */\nmodule.exports = LocalTrackPublicationV2;\n//# sourceMappingURL=localtrackpublication.js.map","'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar TrackSignaling = require('./track');\n/**\n * A {@link LocalTrackPublication} implementation\n * @extends TrackSignaling\n * @property {Track.ID} id\n */\nvar LocalTrackPublicationSignaling = /** @class */ (function (_super) {\n __extends(LocalTrackPublicationSignaling, _super);\n /**\n * Construct a {@link LocalTrackPublicationSignaling}. {@link TrackSenders}\n * are always cloned.\n * @param {DataTrackSender|MediaTrackSender} trackSender - the {@link TrackSender}\n * of the {@link LocalTrack} to be published\n * @param {string} name - the name of the {@link LocalTrack} to be published\n * @param {Track.Priority} priority - initial {@link Track.Priority}\n */\n function LocalTrackPublicationSignaling(trackSender, name, priority) {\n var _this = this;\n trackSender = trackSender.clone();\n var enabled = trackSender.kind === 'data' ? true : trackSender.track.enabled;\n _this = _super.call(this, name, trackSender.kind, enabled, priority) || this;\n _this.setTrackTransceiver(trackSender);\n Object.defineProperties(_this, {\n _updatedPriority: {\n value: priority,\n writable: true\n },\n id: {\n enumerable: true,\n value: trackSender.id\n }\n });\n return _this;\n }\n Object.defineProperty(LocalTrackPublicationSignaling.prototype, \"updatedPriority\", {\n /**\n * The updated {@link Track.Priority} of the {@link LocalTrack}.\n * @property {Track.priority}\n */\n get: function () {\n return this._updatedPriority;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Enable (or disable) the {@link LocalTrackPublicationSignaling} if it is not\n * already enabled (or disabled). This also updates the cloned\n * {@link MediaTrackSender}'s MediaStreamTracks `enabled` state.\n * @param {boolean} [enabled=true]\n * @return {this}\n */\n LocalTrackPublicationSignaling.prototype.enable = function (enabled) {\n enabled = typeof enabled === 'boolean' ? enabled : true;\n this.trackTransceiver.track.enabled = enabled;\n return _super.prototype.enable.call(this, enabled);\n };\n /**\n * Rejects the SID's deferred promise with the given Error.\n * @param {Error} error\n * @returns {this}\n */\n LocalTrackPublicationSignaling.prototype.publishFailed = function (error) {\n if (setError(this, error)) {\n this.emit('updated');\n }\n return this;\n };\n /**\n * Update the {@link Track.Priority} of the published {@link LocalTrack}.\n * @param {Track.priority} priority\n * @returns {this}\n */\n LocalTrackPublicationSignaling.prototype.setPriority = function (priority) {\n if (this._updatedPriority !== priority) {\n this._updatedPriority = priority;\n this.emit('updated');\n }\n return this;\n };\n /**\n * Set the published {@link LocalTrack}'s {@link Track.SID}.\n * @param {Track.SID} sid\n * @returns {this}\n */\n LocalTrackPublicationSignaling.prototype.setSid = function (sid) {\n if (this._error) {\n return this;\n }\n return _super.prototype.setSid.call(this, sid);\n };\n /**\n * Stop the cloned {@link TrackSender}.\n * @returns {void}\n */\n LocalTrackPublicationSignaling.prototype.stop = function () {\n this.trackTransceiver.stop();\n };\n return LocalTrackPublicationSignaling;\n}(TrackSignaling));\n/**\n * @param {LocalTrackPublication} publication\n * @param {Error} error\n * @returns {boolean} updated\n */\nfunction setError(publication, error) {\n if (publication._sid !== null || publication._error) {\n return false;\n }\n publication._error = error;\n return true;\n}\nmodule.exports = LocalTrackPublicationSignaling;\n//# sourceMappingURL=localtrackpublication.js.map","/* eslint consistent-return:0 */\n'use strict';\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar ParticipantSignaling = require('./participant');\nvar RoomSignaling = require('./room');\nvar StateMachine = require('../statemachine');\n/*\nSignaling States\n----------------\n\n +---------+\n | |\n | opening |\n +--->| |\n | +---------+\n +--------+ | | +------+\n | |<--+ +-->| |\n | closed |<----------| open |\n | |<--+ +-->| |\n +--------+ | | +------+\n +---------+ |\n | |<--+\n | closing |\n | |\n +---------+\n\n*/\nvar states = {\n closed: [\n 'opening'\n ],\n opening: [\n 'closed',\n 'open'\n ],\n open: [\n 'closed',\n 'closing'\n ],\n closing: [\n 'closed',\n 'open'\n ]\n};\n/**\n * @extends StateMachine\n * @property {string} state - one of \"closed\", \"opening\", \"open\", or \"closing\"\n */\nvar Signaling = /** @class */ (function (_super) {\n __extends(Signaling, _super);\n /**\n * Construct {@link Signaling}.\n */\n function Signaling() {\n return _super.call(this, 'closed', states) || this;\n }\n /**\n * @private\n */\n // NOTE(mroberts): This is a dummy implementation suitable for testing.\n Signaling.prototype._close = function (key) {\n this.transition('closing', key);\n this.transition('closed', key);\n return Promise.resolve(this);\n };\n /**\n * @private\n */\n // NOTE(mroberts): This is a dummy implementation suitable for testing.\n Signaling.prototype._connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n localParticipant.connect('PA00000000000000000000000000000000', 'test');\n var sid = 'RM00000000000000000000000000000000';\n var promise = Promise.resolve(new RoomSignaling(localParticipant, sid, options));\n promise.cancel = function cancel() { };\n return promise;\n };\n /**\n * @private\n */\n // NOTE(mroberts): This is a dummy implementation suitable for testing.\n Signaling.prototype._open = function (key) {\n this.transition('opening', key);\n this.transition('open', key);\n return Promise.resolve(this);\n };\n /**\n * Close the {@link Signaling}.\n * @returns {Promise}\n */\n Signaling.prototype.close = function () {\n var _this = this;\n return this.bracket('close', function (key) {\n switch (_this.state) {\n case 'closed':\n return _this;\n case 'open':\n return _this._close(key);\n default:\n throw new Error(\"Unexpected Signaling state \\\"\" + _this.state + \"\\\"\");\n }\n });\n };\n /**\n * Connect to a {@link RoomSignaling}.\n * @param {ParticipantSignaling} localParticipant\n * @param {string} token\n * @param {EncodingParametersImpl} encodingParameters\n * @param {PreferredCodecs} preferredCodecs\n * @param {object} options\n * @returns {Promise>}\n */\n Signaling.prototype.connect = function (localParticipant, token, encodingParameters, preferredCodecs, options) {\n var self = this;\n return this.bracket('connect', function transition(key) {\n switch (self.state) {\n case 'closed':\n return self._open(key).then(transition.bind(null, key));\n case 'open':\n // NOTE(mroberts): We don't need to hold the lock in _connect. Instead,\n // we just need to ensure the Signaling remains open.\n self.releaseLockCompletely(key);\n return self._connect(localParticipant, token, encodingParameters, preferredCodecs, options);\n default:\n throw new Error(\"Unexpected Signaling state \\\"\" + self.state + \"\\\"\");\n }\n });\n };\n /**\n * Create a local {@link ParticipantSignaling}.\n * @returns {ParticipantSignaling}\n */\n Signaling.prototype.createLocalParticipantSignaling = function () {\n return new ParticipantSignaling();\n };\n /**\n * Open the {@link Signaling}.\n * @returns {Promise}\n */\n Signaling.prototype.open = function () {\n var _this = this;\n return this.bracket('open', function (key) {\n switch (_this.state) {\n case 'closed':\n return _this._open(key);\n case 'open':\n return _this;\n default:\n throw new Error(\"Unexpected Signaling state \\\"\" + _this.state + \"\\\"\");\n }\n });\n };\n return Signaling;\n}(StateMachine));\nmodule.exports = Signaling;\n//# sourceMappingURL=index.js.map","'use strict';\nvar _a = require('../webrtc/util'), guessBrowser = _a.guessBrowser, isWebRTCSupported = _a.support;\nvar getSdpFormat = require('../webrtc/util/sdp').getSdpFormat;\nvar _b = require('./browserdetection'), isAndroid = _b.isAndroid, isMobile = _b.isMobile, isNonChromiumEdge = _b.isNonChromiumEdge, rebrandedChromeBrowser = _b.rebrandedChromeBrowser, mobileWebKitBrowser = _b.mobileWebKitBrowser;\nvar SUPPORTED_CHROME_BASED_BROWSERS = [\n 'crios',\n 'edg',\n 'edge',\n 'electron',\n 'headlesschrome'\n];\nvar SUPPORTED_ANDROID_BROWSERS = [\n 'chrome',\n 'firefox'\n];\nvar SUPPORTED_IOS_BROWSERS = [\n 'chrome',\n 'safari'\n];\n// Currently none. Add 'brave', 'edg', and 'edge' here once we start supporting them\nvar SUPPORTED_MOBILE_WEBKIT_BASED_BROWSERS = [];\n/**\n * Check if the current browser is officially supported by twilio-video.js.\n * @returns {boolean}\n */\nfunction isSupported() {\n var browser = guessBrowser();\n // NOTE (csantos): Return right away if there is no browser detected\n // to prevent unnecessary checks which could lead to errors\n if (!browser) {\n return false;\n }\n var rebrandedChrome = rebrandedChromeBrowser(browser);\n var mobileWebKit = mobileWebKitBrowser(browser);\n var supportedMobileBrowsers = isAndroid() ?\n SUPPORTED_ANDROID_BROWSERS : SUPPORTED_IOS_BROWSERS;\n return !!browser\n && isWebRTCSupported()\n && getSdpFormat() === 'unified'\n && (!rebrandedChrome || SUPPORTED_CHROME_BASED_BROWSERS.includes(rebrandedChrome))\n && !isNonChromiumEdge(browser)\n && (!mobileWebKit || SUPPORTED_MOBILE_WEBKIT_BASED_BROWSERS.includes(mobileWebKit))\n && (!isMobile() || supportedMobileBrowsers.includes(browser));\n}\nmodule.exports = isSupported;\n//# sourceMappingURL=support.js.map","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-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\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\n/// \n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT \n * @author Lea Verou \n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new